1、查看分支
查看本地分支和远程分支
git branch -a
显式地获得远程引用的完整列表
git ls-remote (remote)
获得远程分支的更多信息
git remote show (remote)
更新远程分支列表
git remote update origin –prune
删除远程不存在的分支列表
git remote prune origin
2、创建dev分支,然后切换到dev分支:
$ git checkout -b dev Switched to a new branch 'dev'
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev $ git checkout dev Switched to branch 'dev'
3、拉取远程分支并创建本地分支
$ git checkout -b 本地分支名x origin/远程分支名x
使用该方式会在本地新建分支x,并自动切换到该本地分支x
采用此种方法建立的本地分支会和远程分支建立映射关系
$ git fetch origin 远程分支名x:本地分支名x
使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout
采用此种方法建立的本地分支不会和远程分支建立映射关系
4、把分支推到远程分支
$ git push origin test
5、删除本地分支
$ git branch -d xxxxx
6、删除远程分支
Git v1.7.0 之后
git push origin –delete <branchName>
否则
git push origin :<branchName>
7、删除tag
-Git v1.7.0 之后
git push origin –delete tag <tagname>
- 否则
git tag -d <tagname>
git push origin :refs/tags/<tagname>
8、把本地tag推送到远程
git push –tags
9、获取远程tag
git fetch origin tag <tagname>
10、git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id
【本地代码库回滚】:
git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除 git reset --hard HEAD~3:将最近3次的提交回滚
【远程代码库回滚】:
这个是重点要说的内容,过程比本地回滚要复杂
应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布
原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支
操作步骤:
1、git checkout the_branch 2、git pull 3、git branch the_branch_backup //备份一下这个分支当前的情况 4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id 5、git push origin :the_branch //删除远程 the_branch 6、git push origin the_branch //用回滚后的本地分支重新建立远程分支 7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支
如果使用了gerrit做远程代码中心库和code review平台,需要确保操作git的用户具备分支的push权限,
并且选择了 Force Push选项(在push权限设置里有这个选项)
另外,gerrit中心库是个bare库,将HEAD默认指向了master,因此master分支是不能进行删除操作的,最好不要选择删除master分支的策略,换用其他分支。如果一定要这样做,可以考虑到gerrit服务器上修改HEAD指针。。。不建议这样搞
11、git stash
git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
git stash # save uncommitted changes
git stash list # list stashed changes in this git
git show stash@{0} # see the last stash
git stash pop # apply last stash and remove it from the list
git stash apply stash@{1} # 取出指定的版本的stash
git stash clear # 清空 stash 栈
git stash --help # for more info
12、把dev分支的工作成果合并到master分支上
$ git merge dev
Updating d17efd8..fec145a
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。