还原提交并仅重新应用其中的一些
Revert commits and only reapply some of them
我知道以前肯定有人问过这个问题,但我正在努力进行足够准确的搜索以找到答案。
在我的 repo 中,我有一个错误的提交,然后是两个好的提交。我需要删除错误的提交但保留好的提交。我该怎么做?
我想我必须还原到坏提交之后的第一个好提交,隐藏现在未跟踪的更改,还原坏提交,然后重新提交隐藏的更改?
编辑:
我的问题不准确。我实际上有一个糟糕的合并,然后是两个好的提交。我觉得这是一个不同的场景,原来的(错误的)问题已经回答了,所以我会提出一个新问题。
如果它是一个私有分支并且没有其他人看到它并将自己置于其之上,请考虑重写历史记录以删除错误的提交:
git checkout my-branch~3 # go to the revision previous to the one that is bad
git cherry-pick my-branch~2..my-branch # apply only the last two commit from my branch
# if you like the result
git branch -f my-branch # set my-branch where I am
git checkout my-branch
应该可以
快速回答:只需还原错误的提交。
更长的答案:基本上你在这里有 2 个选项:
2 个好提交与坏提交无关。
如果他们不接触相同的文件或文件中的相同区域,您可以简单地恢复 'bad' 提交,它应该可以正常工作。
好的提交与坏的提交有关。在这种情况下,您将在尝试还原 'bad' 提交时遇到冲突。
然而,即使您删除了好的提交,然后删除了错误的提交。您在尝试 re-apply 好的提交时仍然会遇到冲突。
所以底线 - 只需恢复错误的提交,并解决您可能遇到的任何冲突。
我知道以前肯定有人问过这个问题,但我正在努力进行足够准确的搜索以找到答案。
在我的 repo 中,我有一个错误的提交,然后是两个好的提交。我需要删除错误的提交但保留好的提交。我该怎么做?
我想我必须还原到坏提交之后的第一个好提交,隐藏现在未跟踪的更改,还原坏提交,然后重新提交隐藏的更改?
编辑:
我的问题不准确。我实际上有一个糟糕的合并,然后是两个好的提交。我觉得这是一个不同的场景,原来的(错误的)问题已经回答了,所以我会提出一个新问题。
如果它是一个私有分支并且没有其他人看到它并将自己置于其之上,请考虑重写历史记录以删除错误的提交:
git checkout my-branch~3 # go to the revision previous to the one that is bad
git cherry-pick my-branch~2..my-branch # apply only the last two commit from my branch
# if you like the result
git branch -f my-branch # set my-branch where I am
git checkout my-branch
应该可以
快速回答:只需还原错误的提交。
更长的答案:基本上你在这里有 2 个选项:
2 个好提交与坏提交无关。 如果他们不接触相同的文件或文件中的相同区域,您可以简单地恢复 'bad' 提交,它应该可以正常工作。
好的提交与坏的提交有关。在这种情况下,您将在尝试还原 'bad' 提交时遇到冲突。 然而,即使您删除了好的提交,然后删除了错误的提交。您在尝试 re-apply 好的提交时仍然会遇到冲突。
所以底线 - 只需恢复错误的提交,并解决您可能遇到的任何冲突。