创建与合并分支
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!
分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
首先,创建分支dev
并切换到dev
分支:
$ git checkout -b dev
Switched to a new branch 'dev'
git checkout
命令加上-b
参数表示创建并切换到dev
分支,相当于下面两条命令:
$ git branch dev
$ git checkout dev
Switch to branch 'dev'
然后用git branch
命令查看当前分支:
$ git branch
* dev
master
git branch
会列出所有分支,当前分支前面会有一个*
号。
然后,我们就可以在dev分支上正常提交,比如对readme.txt
做个修改,加上一行:
$ vi readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Creating a new branch is quicki.
然后提交:
$ git add readme.txt
$ git commit -m "branch test"
[dev b3d6a1b] branch test
1 file changed, 2 insertions(+), 1 deletion(-)
现在dev
分支的工作已经完成,切换回master
分支:
$ git checkout master
切换回master
分支发现readme.txt
并没有改变,因为我们是在dev
分支上进行的修改。
现在我们把dev
分支合并到master
分支上。
$ git merge dev
Updating 7a5f61e..b3d6a1b
Fast-forward
readme.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
git merge
命令用于将指定的分支合并到当前分支。合并后再查看readme.txt
发现和dev
提交的一样,证明合并成功。
合并完成后,就可以放心的删除dev
分支了。
$ git branch -d dev
Deleted branch dev (was b3d6a1b).
再查看一下分支:
$ git branch
* master
只剩下一个master
分支。
小结
- 创建分支
$ git branch <分支名>
- 切换分支
$ git checkout <分支名>
- 创建并切换分支
$ git checkout -b <分支名>
- 查看分支
$ git branch
- 合并分支到当前分支
$ git merge <分支名>
- 删除分支
$ git branch -d <分支名>