假设您正在从事一项统治世界的秘密计划。这个阴谋有三个主谋:
他们都同意在 1 周内来到他们的秘密基地,每个人都有 1 个详细的计划。
电脑黑客,作为一个务实的程序员,建议他们使用 Git 来存储计划的所有文件。每个人都会 fork 初始项目 repo,他们将在一周内合并。
他们都同意,在接下来的几天里,故事是这样的:
天才
他总共进行了 70 次提交,每天 10 次。
将军
他监视了他们同志的回购并制定了击败他们的策略。他在最后一天做了 3 次提交。
电脑黑客
这位务实的程序员使用了分支。他制定了 4 个不同的计划,每个计划都在一个分支上。每个分支都被重新定位为一个提交。
七天过去了,小组再次开会,将所有计划合并为一个杰作。他们都渴望开始,所以他们都试图自己合并所有的东西。
故事是这样的:
天才
他合并了 General 的 repo 和 Computer Hacker 的所有更改。然后,作为一个逻辑爱好者,他看了看日志。他希望看到一个想法的逻辑演变,其中的东西是在以前的想法提交的基础上构建的。
但是日志显示的是,在时间线上混合了无数不同想法的提交。仅通过阅读提交时间线,一位读者无法真正理解提交的演变和推理。
所以他以一团糟,即使是天才也无法理解。
将军
一般思想:分而治之!
因此他将 Genius 的 repo 合并到他的 repo 中。他查看了日志,看到了 Genius 想法的一堆提交,这些提交遵循一个不稳定的进展,直到最后一天。最后一天,将军和天才的想法混杂在一起。
他正在监视计算机黑客并且知道 Rebase 解决方案。所以他对自己的想法做了一个rebase,然后再次尝试合并。
现在日志每天都显示出一个合乎逻辑的进展。
电脑黑客
这位务实的程序员为 Genius 想法创建了一个集成分支,为 General 想法创建了另一个分支,为他自己的想法创建了另一个分支。他对每个分支都做了一个变基。然后他将所有内容合并到master中。
他的所有队友都看到他的日志很棒。这很简单。乍一看,它是不稳定的。
如果一个想法引入了一个问题,那么很清楚是在哪个提交中引入的,因为只有一个。
他们最终征服了整个世界,并且不再使用 Subversion。
大家都很开心。