Git 的优点很多,但是这里只列出我认为非常突出的几点:
感兴趣的,可以去看一下 Git 本身的设计。其内在的架构体现了很多优势,不愧是出自天才程序员 Linus(Linux 之父)之手。
虽然有这么优秀的版本管理工具,但我们面对版本管理时依然有非常大的挑战。大家工作在同一个仓库上,彼此的代码协作必然带来很多问题和挑战,如下:
大部分开发人员现在使用 Git 就只是用三个甚至两个分支:一个是 Master,一个是 Develop,还有一个是基于 Develop 打的各种分支。这在小项目规模的时候还勉强可以支撑,因为很多人做项目就只有一个 Release。但是人员一多,而且项目周期一长,就会出现各种问题。
就像代码需要代码规范一样,代码管理同样需要一个清晰的流程和规范。
Vincent Driessen 同学为了解决这个问题,提出了 A Successful Git Branching Model。
下面的图你理解不了?没关系,这不是你的错。我觉得这张图本身有点问题——这张图应该左转90度,大家应该就很容易理解了。
也就是我们经常使用的 Master 分支。这个分支包含最近发布到生产环境的代码(最近发布的 Release)。
这个分支只能从其他分支合并,不能直接在此分支修改。
这个分支是我们的主开发分支,包含所有要发布到下一个 Release 的代码。
主要用于合并其他分支,比如 Feature 分支。
主要用于开发一个新功能。一旦开发完成,就合并回 Develop 分支,进入下一个 Release。
当你需要发布一个新 Release 时,基于 Develop 分支创建一个 Release 分支。
完成 Release 后,将此分支合并到 Master 和 Develop 分支。
当在 Production(Master)发现新 Bug 时,需要创建一个 Hotfix 分支。
完成修复后,合并回 Master 和 Develop 分支,因此 Hotfix 的改动会进入下一个 Release。