说明

分支就像玄幻小说里面的分身,让一个分身去学习JavaScript,另一个分身去学习Git,然后合并两个分身之后,这两个分身对你的本体没有任何影响,平时互不干扰,只有在某个特定的时间,两个分身合并了,你就学会了GitJavaScript

好了,言归正传,分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

那么有的人可能会问了,创建、切换分支会不会很慢,如果文件非常多的话。

这个就不用担心了,Git的分支是与众不同的,无论创建、切换和删除分支,Git在1秒钟之内就能完成!无论你的版本库是1个文件还是1万个文件。

建议

  • 多提交,少推送。多人协作时,推送会频繁地带来合并冲突的问题,影响效率。因此,尽量多使用提交命令,减少合并的使用,这样会节省很多时间。
  • 使用Git流Git Flow,即多分支结构。
  • 使用分支,保持主分支的整洁。这是我强烈推荐的一点,在分支进行提交,然后切到主分支更新git pull —rebase,再合并分支、推送。这样的流程会避免交叉合并的情况出现(不会出现共同祖先节点为多个的情况)。事实上,git合并操作让很多人感到不知所措的原因就是各种原因所产生的交叉合并问题,从而造成在合并的过程中丢失某些代码。保持主分支的整洁能够避免交叉合并的情况出现。
  • 禁用fast-forward模式。在拉取代码的时候使用rebase参数(前提是保持主分支的整洁)、合并的时候使用—no-ff参数禁用fast-forward模式,这样做既能保证节点的清晰,又避免了交叉合并的情况出现。