了解 Git 工作流文章说,
所以你添加了一条新规则:“当你在你的特性分支中合并时,使用 –no-ff 来强制一个新的提交。” 这样就完成了工作,然后您继续前进。
然后有一天你在生产中发现了一个严重的错误,你需要追踪它是什么时候引入的。您运行 bisect 但继续登陆检查点提交。你放弃并亲自调查。
您将错误缩小到单个文件。你跑去责备看看它在过去 48 小时内是如何变化的。您知道这是不可能的,但责备报告该文件已数周未动过。事实证明,责备报告在初始提交时发生了变化,而不是在合并时。你的第一次检查点提交几周前修改了这个文件,但今天合并了。
no-ff 创可贴、折断的二分法和怪罪之谜都是您将螺丝刀用作锤子的症状。
git merge--no-ff
是您明确阻止快进合并的一种情况。但是,如果一个提交不是另一个提交的直接祖先,那么快进甚至不会发生。这是开发中罕见的情况。换句话说,大多数合并都是非快进类型。那么传递如何--no-ff
破坏bisect
and的功能blame
呢?