git && gitlab 使用
安装略过
使用
基于公钥的认证登录,方便对用户进行权限控制
useradd -s /usr/bin/git-shell testgit #创建一个用户 或者直接useradd testgit 然后去/etc/passwd 修改testgit用户的bash 为/usr/bin/git-shell
passwd testgit #更改密码
cd /home/testgit/ #进入家目录,
git init --bare testgit.git #初始化一个仓库 chown -R testgit:testgit /home/testgit #更改目录权限
mkdir .ssh && cd .ssh/ && touch authorized_keys 将用户的公钥写进去就ok了,访问路径为 ssh://testgit@ip:/home/testgit/testgit.git
git clone备份后为 .git的目录文件,此文为将此类文件恢复至 gitlab
#从原地址克隆一份裸版本库,比如原本托管于 GitHub。
git clone –bare git://github.com/username/project.git #然后到新的 Git 服务器上创建一个新项目,比如 GitCafe。
#以镜像推送的方式上传代码到 GitCafe 服务器上。
cd project.git
git push --mirror git@gitcafe.com/username/newproject.git
#删除本地代码
cd ..
rm -rf project.git
实例(此方法会保留原有源码库的所有分支)
到新服务器 GitCafe 上找到 Clone 地址,直接 Clone 到本地就可以了。
git clone git@gitcafe.com/username/newproject.git 这种方式可以保留原版本库中的所有内容。
提交前要删除本地remotes中的分支引用,这样就不会将remotes里面的远程分支也推到服务器上去: 另外还可以直接修改当前仓库的远程地址,然后push一下就能将历史都提交上去: git remote set-url origin remote_git_address
初次建立项目,代码上传与下载
http方式:
Git global setup ###(gitlab客户端上执行(linux/windows(gitbash)))
git config --global user.name "gaoxinjie"
git config --global user.email "gaoxinjie@lavion.com.cn" Create a new repository ###创建一个新仓库
git clone http://gaoxinjie@iZ2zei7b23po43up3908hrZ/my_object/work.git
cd work
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master Existing folder ###在一个存在的文件夹下上传代码
cd existing_folder
git init
git remote add origin http://gaoxinjie@iZ2zei7b23po43up3908hrZ/my_object/work.git
git add .
git commit
git push -u origin master Existing Git repository ###在一个存在的git仓库下上传代码
cd existing_repo
git remote add origin http://gaoxinjie@iZ2zei7b23po43up3908hrZ/my_object/work.git
git push -u origin --all
git push -u origin --tags ssh方式: Command line instructions
Git global setup git config --global user.name "gaoxinjie"
git config --global user.email "gaoxinjie@lavion.com.cn" Create a new repository
git clone git@iZ2zei7b23po43up3908hrZ:my_object/work.git
cd work
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master Existing folder
cd existing_folder
git init
git remote add origin git@iZ2zei7b23po43up3908hrZ:my_object/work.git
git add .
git commit
git push -u origin master Existing Git repository
cd existing_repo
git remote add origin git@iZ2zei7b23po43up3908hrZ:my_object/work.git
git push -u origin --all
git push -u origin --tags
gitlab
添加sshkey
ssh-keygen -t rsa
将id_rsa.pub 上传到sshkyes 即可
使用
创建分支: $ git branch mybranch
切换分支: $ git checkout mybranch
创建并切换分支: $ git checkout -b mybranch
列出所有分支: $ git branch 更新master主线上的东西到该分支上:$git rebase master 切换到master分支:$git checkout master
更新mybranch分支上的东西到master上:$git rebase mybranch
修改并提交
文件做了修改以后要先 git add 文件名
然后 提交: git commit -a -m "add **.txt"
然后 push到远程服务器: git push origin develop(分支名) 对最近一次commit的进行修改:git commit -a –amend commit之后,如果想撤销最近一次提交(即退回到上一次版本)并本地保留代码:git reset HEAD^
合并分支
下面两条命令的意思是切换到master分支,并将mybranch的分支的内容合并到master分支 $ git checkout master
$ git merge mybranch (merge from mybranch) 例: develop分支添加了内容,并且合并到master分支
删除分支: $ git branch -d mybranch
强制删除分支: $ git branch -D mybranch
列出所有分支: $ git branch
查看各个分支最后一次提交: $ git branch -v 查看哪些分支合并入当前分支: $ git branch –merged
查看哪些分支未合并入当前分支: $ git branch –no-merged 更新远程库到本地: $ git fetch origin
推送分支: $ git push origin mybranch
取远程分支合并到本地: $ git merge origin/mybranch
git log -p master..origin/master ####比较本地的master分支和origin/master分支的差别
取远程分支并分化一个新分支: $ git checkout -b mybranch origin/mybranch
删除远程分支:$ git push origin :mybranch
git pull && git fetch
git pull 命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。 $ git pull <远程主机名> <远程分支名>:<本地分支名> 比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
$ git pull origin next:master $ git pull origin next 上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。 $ git fetch origin
$ git merge origin/next git fetch 一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。
$ git fetch <远程主机名>
上面命令将某个远程主机的更新,全部取回本地。 默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。 $ git fetch <远程主机名> <分支名> 比如,取回origin主机的master分支。
$ git fetch origin master 所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取。比如origin主机的master,就要用origin/master读取。 git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。
$ git branch -r
git rebase
rebase(参考链接: http://www.cnblogs.com/kym/archive/2010/08/12/1797937.html)
$ git checkout mybranch
$ git rebase master (rebase from master) 举例:
$ git checkout server
$ git rebase –onto master server client
$ git checkout master
$ git merge client (fostforward)
$ git rebase master server (checkout sever)
$ git merge server
$ git branch -d client
$ git branch -d server
回滚
备份
使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份: gitlab-rake gitlab:backup:create
使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1393513186_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1393513186是备份创建的日期. Gitlab 修改备份文件默认目录 你也可以通过修改/etc/gitlab/gitlab.rb来修改默认存放备份文件的目录: gitlab_rails['backup_path'] = '/mnt/backups'
/mnt/backups修改为你想存放备份的目录即可, 修改完成之后使用gitlab-ctl reconfigure命令重载配置文件即可. 同样, Gitlab的从备份恢复也非常简单: 将备份文件拷贝到新服务器 /var/opt/gitlab/backups目录下 # 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq # 从1393513186编号备份中恢复
gitlab-rake gitlab:backup:restore BACKUP= # 启动Gitlab
sudo gitlab-ctl start Gitlab迁移 迁移如同备份与恢复的步骤一样, 只需要将老服务器/var/opt/gitlab/backups目录下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups即可(如果你没修改过默认备份目录的话).
但是需要注意的是新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同. 比如新服务器安装的是最新的7.60版本的Gitlab, 那么迁移之前, 最好将老服务器的Gitlab 升级为7.60在进行备份. 关闭注册功能: Admin(左侧菜单栏)-->settings --> Sign-in Restrictions
Sign-upenbaled 关闭注册功能
Sign-inenbaled 关闭注册登录功能
创建仓库简单示例
useradd -s /usr/bin/git-shell testgit #创建一个用户 或者直接useradd testgit 然后去/etc/passwd 修改testgit用户的bash 为/usr/bin/git-shell
passwd testgit #更改密码
cd /home/testgit/ #进入家目录,
git init --bare cloudapp.git #初始化一个仓库 chown -R testgit:testgit /home/testgit #更改目录权限
mkdir .ssh && cd .ssh/ && authorized_keys 将用户的公钥写进去就ok了
git && gitlab 使用的更多相关文章
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken
前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+A ...
- Git+Gitlab+Ansible剧本实现一键部署动态网站(二)--技术流ken
项目前言 之前已经写了一篇关于git和ansible的博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>.关于git,gitliab,ansible在我 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)
在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+Ansi ...
- ssh: connect to git@gitlab.xxxxx.com:xxxxx.git port 22: Connection refused
公司服务器上的gitlab项目添加了ssh密钥,但是操作时却报错ssh: connect to git@gitlab.xxxxx.com:xxxxx.git port 22: Connection r ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(7)
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)–技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(6)
前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>,<Git+Gitlab+An ...
- Git+Gitlab+Ansible剧本实现一键部署动态网站(5)
项目前言 之前已经写了一篇关于git和ansible的博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>.关于git,gitliab,ansible在我以 ...
- Git&Gitlab开发流程与运维管理
Git&Gitlab开发流程与运维管理 作者 刘畅 时间 2020-10-31 实验系统版本centos7.5 主机名称 ip地址 配置 安装软件 controlnode 172.16.1.1 ...
- Git & Gitlab 使用指南
2016-02-23 | 9,129字 | 分类于 工具 | 3条评论 去年小组在从 SVN 和 TFS 迁移到 Git 的过程中整理了这份文档,面向的用户是对 Git 和 SV ...
随机推荐
- Python字典、集合之高山流水
字典dict字典是由大括号{键:值}组成.字典是无序的.字典的键必须是不可变数据类型.不能使用列表作为键,但可以使用元祖作为字典的键.例如: dict_ = {"test":&qu ...
- iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包
本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类 1. 1 如何在swift的类中使用oc类 1.2 如何在swift中实现oc的代理 ...
- Win10 - MySQL 5.7 忘记密码
Win10 - MySQL 5.7 忘记密码 # 关闭 mysql 服务 net stop mysql # 在命令行输入以下命令, 输入后新建一个 CMD 窗口 mysqld -nt --skip-g ...
- Win10 Service'MongoDB Server' failed to start. Verify that you have sufficient privileges to start system services【简记】
最近工作中有需要用到 MongoDB数据库,以前用的3.*的版本,这次用的是较新4.0.6的版本,然后去官网下载安装. 安装到一半,就弹出如下提示,说是"MongoDB Server&quo ...
- DB2增删改不记录日志
第一步:关闭事务自动提交 C:\DB2>db2set DB2OPTIONS=+c +c永久关闭自动提交,-c永久开启自动提交 第二步:表修改为不记录日志 db2 alter table T1 a ...
- Linux下的快速配置虚拟环境virtualenvwrapper
一 安装包 pip3 install virtualenv virtualenvwrapper 二 设置linux的用户个人配置文件~/.bashrc WORKON_HOME=~/Envs 设置vir ...
- 【Python 09】汇率兑换2.0-2(分支语句)
分支语句:根据判断条件选择程序执行路径 1.使用方法 if <条件1>: <语句块1> elif <条件2>: <语句块2> ... else: < ...
- [LeetCode] 5. 最长回文子串
题目链接:https://leetcode-cn.com/problems/longest-palindromic-substring/ 题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你 ...
- 初学Kafka工作原理流程介绍
Apache kafka 工作原理介绍 消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上, 队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需 ...
- Ubuntu 14.04 结束支持该如何应对?
Ubuntu 14.04 即将于 2019 年 4 月 30 日结束支持.这意味着在此日期之后 Ubuntu 14.04 用户将无法获得安全和维护更新. 你甚至不会获得已安装应用的更新,并且不手动修改 ...