做完‘壁球和合并’后可能会有问题? [英] Possible issue after doing `Squash and Merge`?
本文介绍了做完‘壁球和合并’后可能会有问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Squash and Merge
将dev
分支合并到main
,因为我不希望来自dev
分支的某些提交消息出现在main
中
但现在我发现main
比dev提前了1次提交。该图显示
dev
和main
之间没有联系。这是我以前从未见过的,我第一次使用了挤压和合并
存储库的图形:
现在,我应该做什么:
git checkout dev
git rebase main
否则,我应该在执行挤压和合并后做些什么,以防止发生意外问题。
在这里,我无法理解这种情况。我可能想错了。那样的话,请告诉我什么是正确的。
我的工作流:
我有两个长期存在的分支main
&;dev
。然后我有短命的分支feature
、bug
、hotfix
等等。main
分支始终保持生产就绪。当我合并dev
为main
时,我将删除最后一个feature
分支
我的dev
分支如下所示:
main
分支如下所示:
注意:
- 我是个穿GIT的新手。因此,我的想法可能是错误的。如果是这样,请指出我的错误,告诉我什么是正确的。
- 如有任何建议,将不胜感激。提前谢谢。
推荐答案
遗憾的是,您有两个相互冲突的愿望:
您没有说明它,但通常您希望这些长期存在的分支定期同步,这就是您尝试做的事情。但这意味着您不能这样做:我有两个长期分支
main
&;dev
。
.因为我不希望来自dev分支的某些提交消息出现在Main中。
通过挤压,您获得了两个分支中的代码相同,但您确实需要同步提交,否则将来会有很多痛苦的合并。除非您愿意从main
定期重写dev
,否则您将需要修改您的流程,以确保dev
中的所有提交都是正确的,因为它们最终也将在main
中结束。
dev
合并到main
中(无论是快进还是使用--no-ff
,这取决于您)。在未来,遵循以下经验法则:
要修复您的当前情况,根据评论中的讨论,我们知道您现在可以重写在将特性分支合并到
dev
和/或main
中时,可以使用Squash-Merge,但在将长期分支合并在一起时,您永远不应该使用Squash-Merge。这将防止您以后再次遇到此问题。
dev
和main
,并且您对main
上的提交感到满意。因此,我建议采取以下行动来清理它:
# 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
这篇关于做完‘壁球和合并’后可能会有问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文