仍然比较壁球合并后的承诺差异
Still compare committed difference after squash merging
我使用 squash merge
将 develop
分支合并到 main
分支。假设有提交 A、B、C 从 develop
合并到 main
。更改已成功合并。我可以在 main
分支上看到 squash 提交并且文件已更新。
之后,我从develop
创建了一个新分支(b-new
)并将其合并到develop
。但是,当我尝试再次将 main
与 develop
同步时,我仍然可以看到旧的差异(提交 A、B、C)。如何解决这个问题?
清理:
- PR #1:将提交 A、B、C 从
develop
合并到 main
- PR #2:将
b-new
合并到 develop
- PR #3:再次将
develop
合并到 main
中(我看到旧的差异并且现在卡住了)
- 未经 1 次批准,我无法直接将更改推送到 main
- 修改不会影响到其他人,不用担心。
谢谢。
这个场景是 described in the Git FAQ in some detail,您有两个 运行 长的分支并且正在使用压缩合并。粗略地说,答案是,如果您将 squash 合并与两个长期存在的分支一起使用,那么您将陷入痛苦的世界,并且无法避免。
如果 develop
打算成为一个功能分支,那么为了避免看到这些提交,您应该每次都从 main
重新创建它,方法是先删除它,或者使用 git checkout -B develop main
。如果 develop
打算与 main
一起成为长 运行 分支,那么您不需要使用压缩合并。
我使用 squash merge
将 develop
分支合并到 main
分支。假设有提交 A、B、C 从 develop
合并到 main
。更改已成功合并。我可以在 main
分支上看到 squash 提交并且文件已更新。
之后,我从develop
创建了一个新分支(b-new
)并将其合并到develop
。但是,当我尝试再次将 main
与 develop
同步时,我仍然可以看到旧的差异(提交 A、B、C)。如何解决这个问题?
清理:
- PR #1:将提交 A、B、C 从
develop
合并到main
- PR #2:将
b-new
合并到develop
- PR #3:再次将
develop
合并到main
中(我看到旧的差异并且现在卡住了) - 未经 1 次批准,我无法直接将更改推送到 main
- 修改不会影响到其他人,不用担心。
谢谢。
这个场景是 described in the Git FAQ in some detail,您有两个 运行 长的分支并且正在使用压缩合并。粗略地说,答案是,如果您将 squash 合并与两个长期存在的分支一起使用,那么您将陷入痛苦的世界,并且无法避免。
如果 develop
打算成为一个功能分支,那么为了避免看到这些提交,您应该每次都从 main
重新创建它,方法是先删除它,或者使用 git checkout -B develop main
。如果 develop
打算与 main
一起成为长 运行 分支,那么您不需要使用压缩合并。