我知道必须先问这个问题,但是我一直在努力寻找足够准确的搜索来找到答案。
在我的仓库中,我有一个错误的提交,然后是两个良好的提交。我需要删除错误的提交,但保留好的提交。我该怎么办?
我想我必须还原到不良记录之后的第一个良好提交,存储现在未跟踪的更改,还原不良提交,然后重新提交隐藏的更改?
我的问题不准确。我实际上合并不好,然后进行两次良好提交。我觉得这是另一种情况,原来的(错误的)问题已经得到回答,所以我要问一个新的问题。
答案 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个选择:
这两个良好的提交与错误的提交无关。 如果他们没有触摸相同的文件或文件中的相同区域,则可以简单地还原“错误”的提交,并且它应该没有冲突。
良好的提交与错误的提交有关。在这种情况下,您将遇到尝试还原“错误”提交的冲突。 但是,即使您删除了良好的提交,然后又删除了错误的提交,也是如此。您仍然会遇到冲突,试图重新应用良好的提交。
因此,最重要的是-还原错误的提交,并解决可能存在的任何冲突。