做完‘壁球和合并’后可能会有问题? [英] Possible issue after doing `Squash and Merge`?

查看:15
本文介绍了做完‘壁球和合并’后可能会有问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Squash and Mergedev分支合并到main,因为我不希望来自dev分支的某些提交消息出现在main中 但现在我发现main比dev提前了1次提交。
该图显示devmain之间没有联系。这是我以前从未见过的,我第一次使用了挤压和合并

存储库的图形:

现在,我应该做什么:

  1. git checkout dev
  2. git rebase main

否则,我应该在执行挤压和合并后做些什么,以防止发生意外问题。

在这里,我无法理解这种情况。我可能想错了。那样的话,请告诉我什么是正确的。

我的工作流:

我有两个长期存在的分支main&;dev。然后我有短命的分支featurebughotfix等等。main分支始终保持生产就绪。当我合并devmain

时,我将删除最后一个feature分支

我的dev分支如下所示:

main分支如下所示:

注意:

  • 我是个穿GIT的新手。因此,我的想法可能是错误的。如果是这样,请指出我的错误,告诉我什么是正确的。
  • 如有任何建议,将不胜感激。提前谢谢。

推荐答案

遗憾的是,您有两个相互冲突的愿望:

我有两个长期分支main&;dev

您没有说明它,但通常您希望这些长期存在的分支定期同步,这就是您尝试做的事情。但这意味着您不能这样做:

.因为我不希望来自dev分支的某些提交消息出现在Main中。

通过挤压,您获得了两个分支中的代码相同,但您确实需要同步提交,否则将来会有很多痛苦的合并。除非您愿意从main定期重写dev,否则您将需要修改您的流程,以确保dev中的所有提交都是正确的,因为它们最终也将在main中结束。

从现在开始,我建议使用常规合并将dev合并到main中(无论是快进还是使用--no-ff,这取决于您)。在未来,遵循以下经验法则:

在将特性分支合并到dev和/或main中时,可以使用Squash-Merge,但在将长期分支合并在一起时,您永远不应该使用Squash-Merge。这将防止您以后再次遇到此问题。

要修复您的当前情况,根据评论中的讨论,我们知道您现在可以重写devmain,并且您对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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆