Kno*_*Man 3 git github git-merge branching-and-merging
我用于将分支Squash and Merge合并dev到main,因为我不希望dev分支中的一些提交消息出现在main
但现在我发现这main是在开发之前 1 次提交。并且该图显示和
之间没有联系。这是我以前没有见过的,我也是第一次使用Squash 和 mergedevmain
现在,我应该这样做:
git checkout devgit rebase main否则,在进行Squash 和 Merge后我应该做什么,以防止出现意外问题。
在这里,我无法理解这种情况。我可能想错了。在这种情况下,请告诉我什么是正确的。
我有两个长寿的分支main& dev。然后我有短期分支feature、bug、hotfix等。main分支始终保持生产就绪状态。feature当我合并dev到时我会删除最后一个分支main
dev分支看起来像这样:main看起来像这样:笔记:
不幸的是,您有两个相互冲突的愿望:
我有两个长寿的分支
main&dev。
您没有说明这一点,但通常您希望这些长期存在的分支定期同步,而这正是您尝试做的。但这意味着你不能这样做:
...因为我不希望来自 dev 分支的一些提交消息出现在 main 中。
通过压缩,您可以使两个分支中的代码相同,但您确实还需要同步提交,否则将来您将遇到很多痛苦的合并。除非您愿意dev定期重写main,否则您将需要修改流程以确保所有提交dev都是“正确的”,因为它们最终也会出现main。
从现在开始,我建议使用常规合并进行合并dev(main快进或使用--no-ff,这取决于您)。将来,请遵循以下经验法则:
dev在将功能分支合并到and/or中时可以使用squash-mergemain,但是在将长期存在的分支合并在一起时绝对不应该使用squash-merge。这将防止您将来再次遇到问题。
为了解决您当前的情况,根据评论中的讨论,我们知道您现在可以重写dev和,并且您对 上的提交感到满意。因此,我建议采取以下措施来清理它:mainmain
# rewrite the squash-merge commit message on main to be more meaningful
git switch main
git commit --amend -m "Import web app and modify profile"
git push --force-with-lease
# reset dev to look like main
git switch dev
git reset --hard main
git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2015 次 |
| 最近记录: |