执行“Squash and Merge”后可能出现的问题?
Possible issue after doing `Squash and Merge`?
我使用 Squash and Merge
将 dev
分支合并到 main
中,因为我不希望来自 dev
分支的一些提交消息出现在 [=12] 中=]
但是现在我发现 main
比 dev.
提前 1 次提交
并且图表显示 dev
和 main
之间没有联系。这是我以前没见过的,第一次使用Squash和merge
存储库图表:
现在,我应该怎么做:
git checkout dev
git rebase main
否则,我做了Squash and Merge之后应该怎么办,以防止出现意想不到的问题。
在这里,我无法理解情况。我可能想错了。那样的话,请告诉我什么是正确的。
我的工作流程:
我有两个长期存在的分支 main
和 dev
。然后我有短暂的分支 feature
、bug
、hotfix
等。main
分支始终保持生产就绪状态。当我将 dev
合并到 main
时,我将删除最后一个 feature
分支
我的 dev
分支是这样的:
main
分支如下所示:
注:
- 我是git的新手。所以,我的想法可能是错误的。如果是这样,请指出我的错误并告诉我正确的是什么。
- 任何建议将不胜感激。提前致谢。
不幸的是,你有两个相互矛盾的愿望:
I have two long-lived branches main
& dev
.
你没有说明,但通常你希望这些长期存在的分支定期同步,而这正是你试图做的。但这意味着你不能这样做:
... because I didn't want some of the commit messages from dev branch to appear in main.
通过压缩,你得到的 code 在两个分支中都是相同的,但你真的需要同步提交,否则你会有很多未来的痛苦合并。除非您愿意从 main
定期重写 dev
,否则您将需要修改流程以确保所有提交到 dev
的内容都是“正确的”,因为它们最终会结束也在 main
中。
从现在开始,我会建议通过常规合并将 dev
合并到 main
(fast-forward 或 --no-ff
,这取决于您)。以后,遵循这个经验法则:
It's OK to use squash-merge when merging feature branches into dev
and/or main
, but you should never use squash-merge when merging long lived branches together. This will prevent you from having the problem again in the future.
为了解决您目前的情况,根据评论中的讨论,我们知道您现在可以重写 dev
和 main
,并且您对 [=] 上的提交感到满意11=]。因此,我建议执行以下操作来清理它:
# 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
我使用 Squash and Merge
将 dev
分支合并到 main
中,因为我不希望来自 dev
分支的一些提交消息出现在 [=12] 中=]
但是现在我发现 main
比 dev.
提前 1 次提交
并且图表显示 dev
和 main
之间没有联系。这是我以前没见过的,第一次使用Squash和merge
存储库图表:
现在,我应该怎么做:
git checkout dev
git rebase main
否则,我做了Squash and Merge之后应该怎么办,以防止出现意想不到的问题。
在这里,我无法理解情况。我可能想错了。那样的话,请告诉我什么是正确的。
我的工作流程:
我有两个长期存在的分支 main
和 dev
。然后我有短暂的分支 feature
、bug
、hotfix
等。main
分支始终保持生产就绪状态。当我将 dev
合并到 main
feature
分支
我的 dev
分支是这样的:
main
分支如下所示:
注:
- 我是git的新手。所以,我的想法可能是错误的。如果是这样,请指出我的错误并告诉我正确的是什么。
- 任何建议将不胜感激。提前致谢。
不幸的是,你有两个相互矛盾的愿望:
I have two long-lived branches
main
&dev
.
你没有说明,但通常你希望这些长期存在的分支定期同步,而这正是你试图做的。但这意味着你不能这样做:
... because I didn't want some of the commit messages from dev branch to appear in main.
通过压缩,你得到的 code 在两个分支中都是相同的,但你真的需要同步提交,否则你会有很多未来的痛苦合并。除非您愿意从 main
定期重写 dev
,否则您将需要修改流程以确保所有提交到 dev
的内容都是“正确的”,因为它们最终会结束也在 main
中。
从现在开始,我会建议通过常规合并将 dev
合并到 main
(fast-forward 或 --no-ff
,这取决于您)。以后,遵循这个经验法则:
It's OK to use squash-merge when merging feature branches into
dev
and/ormain
, but you should never use squash-merge when merging long lived branches together. This will prevent you from having the problem again in the future.
为了解决您目前的情况,根据评论中的讨论,我们知道您现在可以重写 dev
和 main
,并且您对 [=] 上的提交感到满意11=]。因此,我建议执行以下操作来清理它:
# 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