有人喜欢git merge --squash
的原因如下:
压缩到单个提交使您有机会清理混乱的 WIP 提交,并为您正在合并的更改提供一个很好的理由。
https://coderwall.com/p/qkrmjq/git-merge-squash
但是,我认为有一些缺点超过了制作干净历史的优点。
git merge --squash
产生一个非合并提交。因此,Git 不会将您要合并的提交识别为合并基础。git merge --squash
当 1) 在分支 X 上将 A 更改为 B,2)从分支 X 到分支 Y,以及 3) 在分支 X 上将 B 更改为 A(还原),以及 4) 将 X 合并到 Y 时,这会导致不需要的合并结果 。 4,在分支 Y 上,从 A 到 B 的更改未恢复。这里,这是 3 路合并,因此比较从分支 X 到合并基础的差异和从分支 Y 到合并基础的另一个差异。前者包括没有变化,后者包括从A到B的变化,所以合并结果包括从A到B的变化。提交作者被覆盖,这会丢弃贡献。
git merge --squash
生成一个名为 who did 的新提交git merge --squash
。当然,提交内容来自原始提交。这听起来像是在窃取贡献。这成为https://github.com/Microsoft/winfile/pull/42#issuecomment-380681627中的一个问题
什么是正确的用例git merge --squash
?