从 main(从 dev)恢复的两个提交,然后在再次将 dev 合并到 main 之后,这些恢复的更改不在 main
Posted
技术标签:
【中文标题】从 main(从 dev)恢复的两个提交,然后在再次将 dev 合并到 main 之后,这些恢复的更改不在 main【英文标题】:Two commits reverted from main (from dev), and then after merging dev to main again those reverted changes are not in main 【发布时间】:2021-10-24 22:16:17 【问题描述】:有两个提交不应该转到main
,但我们从dev
合并到main
,然后我们恢复了这些更改。与此同时,我们在dev
中进行了一些额外的更改,然后在稍后我们将dev
再次合并到main
。但是,在从dev
到main
的合并完成后,我们恢复的那两个提交不在main
中。
需要帮助才能将两次提交中的更改更改为main
分支。
【问题讨论】:
【参考方案1】:发生这种情况是因为这些提交的提交 ID 已经存在于 main
中,因此无法再次引入它们。您通常有 3 个选项:
-
还原这些提交的还原。这在历史记录中可能会造成混淆,因此如果您选择此路线,我建议您在提交消息中添加详细信息,说明您这样做的原因。
重写已还原且需要再次引入的提交的提交 ID。最简单的方法是
git rebase --no-ff commit-X
,其中commit-X
是要重写的第一个提交的父级。但是,如果它们是在您希望重写之后的其他提交,您可能不想重写整个分支。在这种情况下,从目标分支 (main
) 创建一个新分支,挑选所需的提交(这将更改 ID),然后将它们合并到目标中 (main
)。
将您的分支向后重置到还原之前。您很少希望在 main
等共享分支上执行此操作。我只在“一般”中提到它,但我非常怀疑在你的情况下这是一个可行的选择。
【讨论】:
以上是关于从 main(从 dev)恢复的两个提交,然后在再次将 dev 合并到 main 之后,这些恢复的更改不在 main的主要内容,如果未能解决你的问题,请参考以下文章