分支管理
创建分支
hubwiz@df0c3c0b9459:~$ git checkout -b dev
M readme.txt
D test.txt
Switched to a new branch 'dev'
- -b表示参数表示创建并切换
相当于:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
查看分支
hubwiz@df0c3c0b9459:~$ git branch
* dev
master
- git branch 会列出当前分支,*表示当前分支
切换分支
hubwiz@df0c3c0b9459:~$ git checkout master
Switched to branch 'master'
hubwiz@df0c3c0b9459:~$ git branch
dev
* master
分支合并
hubwiz@df0c3c0b9459:~$ git merge dev
Updating 799f847..82cd19f
Fast-forward
readme.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 test.txt
删除分支
hubwiz@df0c3c0b9459:~$ git branch -d dev
Deleted branch dev (was 82cd19f).
- 小结
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
产生冲突
例如,下面合并产生冲突:
hubwiz@df0c3c0b9459:~$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
当合并的时候,产生冲突,需要首先解决冲突,之后再提交,合并才算是成功。
可以使用如下命令查看合并分支图:
hubwiz@df0c3c0b9459:~$ git log --graph
bug分支
使用场景:
当前正在dev分支上进行开发,bug分支上有东西要修改,但是你又不想commit 掉dev上正在开发的工作,这时就要需要把当前的工作现场保存起来,改掉bug分支上的东西,然后再回到dev分支上,把暂存点回复,继续开发。类似于程序的中断处理的过程。
hubwiz@df0c3c0b9459:~$ git stash
Saved working directory and index state WIP on master: e6a468b merged bug fix
HEAD is now at e6a468b merged bug fix
查看stash list:
hubwiz@df0c3c0b9459:~$ git stash list
stash@{0}: WIP on master: e6a468b merged bug fix
git 把stash的内容暂存起来,到后面要恢复下,有两种方法:
- git stash apply:恢复之后,stash内容并不删除,需要git stash drop来进行删除
- git stash pop:执行之后,删除stash内容