有些人喜欢使用git merge --squash
的原因如下:
将多个提交压缩为一个提交可以清理杂乱的WIP提交,并为您正在合并的更改提供充分的理由。
https://coderwall.com/p/qkrmjq/git-merge-squash
然而,我认为这种方法的缺点超过了生成干净历史的优点。1.
git merge --squash
生成了一个非合并提交。因此,Git 将不会将你正在合并的提交识别为合并基础。当在分支 X 上将 A 修改为 B,执行 git merge --squash
合并分支 X 到分支 Y ,再在分支 X 中将 B 修改为 A(还原),然后将分支 X 合并到分支 Y 时,这会导致不希望看到的合并结果。
![enter image description here](https://istack.dev59.com/zfKBR.webp)
2. 提交作者被覆盖,这样就无法贡献代码。
git merge --squash
生成一个新的提交,且该提交的名字是进行 git merge --squash
的人。当然,提交内容来自原始的提交。这听起来像是窃取了其他人的贡献。这在 https://github.com/Microsoft/winfile/pull/42#issuecomment-380681627 中成为了一个问题。
git merge --squash
的正确使用场景是什么?