分支的概念
- 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
<!-- more -->
- 在Git里,这个分支叫主分支,即master分支。
创建并管理分支
-
创建分支
123456
//创建并切换到新建的分支git checkout -b branch01//其实上一步的操作就是相当于下面的两个操作git branch branch01 //创建分支branch01git checkout branch01 //切换分支branch01
-
显示所有分支
1234 | //显示所有分支git branch//切换主线分支git checkout master |
- 合并分支
12 | //将branch01合并到当前分支 大专栏 Git分支管理git merge branch01 |
使用git merge branch 01 执行之后使用的模式是:Fast-forward,这个模式是快进模式,所以非常的快速。
- 删除分支
12 | //删除分支git branch -d branch01 |
- 合并之后的冲突问题
当从主线分支出一个分支:branch01,在后在这个分支上面修改了A文件然后提交到仓库。这时候切换回到主线,又修改了A文件,那么这时候提交到仓库并将分支合并过来的时候,就会出现冲突了: $ git merge branch01 Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt Automatic merge failed; fix conflicts and then commit the result.
这时候会在文件中显示如下冲突的部分:
12345 | <<<<<<< HEADI am ssm test1 and hmaster.=======I am ssm test1 and hAhA.>>>>>>> branch01 |
- 合并分支的策略
上面已经出现合并分支的模式有Fast-forward,这个模式是快速模式,在这个模式下删除分支之后分支的信息会被丢失。 所以可以禁用Fast-forward模式。
12 | //合并的时候禁用Fast-forward模式,并作一次提交commitgit merge --no-ff -m "merge with no-ff" branch01 |