从 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
有两个提交不应该转到 main
,但我们从 dev
合并到 main
,然后我们恢复了这些更改。与此同时,我们对 dev
进行了一些额外的更改,然后在稍后的日期我们再次将 dev
合并到 main
。但是,在从 dev
到 main
.
的合并完成后,我们还原的那两个提交不在 main
中
需要帮助才能将两次提交的更改提交到 main
分支。
发生这种情况是因为这些提交的提交 ID 已经存在于 main
中,因此无法再次引入它们。您通常有 3 个选项:
- 还原那些提交的还原。这在历史记录中可能会造成混淆,因此如果您选择这条路线,我建议您在提交消息中添加详细信息,解释您这样做的原因。
- 重写已还原且需要再次引入的提交的提交 ID。最简单的方法是
git rebase --no-ff commit-X
其中 commit-X
是要重写的第一个提交的父级。但是,如果它们是您希望重写的那些之后的其他提交,您可能不想重写整个分支。在这种情况下,从目标分支 (main
) 中创建一个新分支,挑选所需的提交(这将更改 ID),然后将它们合并到目标中 (main
)。
- 将您的分支向后重置到还原之前。您很少想在
main
等共享分支上执行此操作。我只在“一般”中提及它,但我非常怀疑它是否适合您的情况。
有两个提交不应该转到 main
,但我们从 dev
合并到 main
,然后我们恢复了这些更改。与此同时,我们对 dev
进行了一些额外的更改,然后在稍后的日期我们再次将 dev
合并到 main
。但是,在从 dev
到 main
.
main
中
需要帮助才能将两次提交的更改提交到 main
分支。
发生这种情况是因为这些提交的提交 ID 已经存在于 main
中,因此无法再次引入它们。您通常有 3 个选项:
- 还原那些提交的还原。这在历史记录中可能会造成混淆,因此如果您选择这条路线,我建议您在提交消息中添加详细信息,解释您这样做的原因。
- 重写已还原且需要再次引入的提交的提交 ID。最简单的方法是
git rebase --no-ff commit-X
其中commit-X
是要重写的第一个提交的父级。但是,如果它们是您希望重写的那些之后的其他提交,您可能不想重写整个分支。在这种情况下,从目标分支 (main
) 中创建一个新分支,挑选所需的提交(这将更改 ID),然后将它们合并到目标中 (main
)。 - 将您的分支向后重置到还原之前。您很少想在
main
等共享分支上执行此操作。我只在“一般”中提及它,但我非常怀疑它是否适合您的情况。