还原提交,仅重新应用其中的一些

时间:2019-07-03 17:01:26

标签: git git-revert

我知道必须先问这个问题,但是我一直在努力寻找足够准确的搜索来找到答案。

在我的仓库中,我有一个错误的提交,然后是两个良好的提交。我需要删除错误的提交,但保留好的提交。我该怎么办?

我想我必须还原到不良记录之后的第一个良好提交,存储现在未跟踪的更改,还原不良提交,然后重新提交隐藏的更改?

编辑:

我的问题不准确。我实际上合并不好,然后进行两次良好提交。我觉得这是另一种情况,原来的(错误的)问题已经得到回答,所以我要问一个新的问题。

2 个答案:

答案 0 :(得分:0)

如果它是一个私有分支,并且没有人看到它并将其置于其顶部,请考虑重写历史记录以删除错误的提交:

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

那应该做

答案 1 :(得分:0)

快速解答:只需还原错误的提交即可。

更长的答案:基本上,您在这里有2个选择:

  1. 这两个良好的提交与错误的提交无关。 如果他们没有触摸相同的文件或文件中的相同区域,则可以简单地还原“错误”的提交,并且它应该没有冲突。

  2. 良好的提交与错误的提交有关。在这种情况下,您将遇到尝试还原“错误”提交的冲突。 但是,即使您删除了良好的提交,然后又删除了错误的提交,也是如此。您仍然会遇到冲突,试图重新应用良好的提交。

因此,最重要的是-还原错误的提交,并解决可能存在的任何冲突。