Git:如何撤销一次撤销

4
这是我的当前情况。
我错误地合并了一个包含垃圾的拉取请求。
因此,我使用“git revert -m 1 <提交的sha>”撤消它。
现在我希望撤消这个还原,但这一次只要挑选正确的更改。
请问我该怎么做?
谢谢。

那么你不想撤销撤销,只是想将一些提交挑选到你的分支中吗? - Roman
谢谢ROMA,我想是这样的 :-) - Lisa Anne
听起来你应该使用 cherry-pick ;) - Roman
可能是重复的问题:如何“取消还原”已还原的Git提交? - jub0bs
2个回答

3
在git中,还原(revert)也是一种提交。因此,您可以像对待常规提交一样撤销还原操作:
git revert <revert_you_want_to_undo_sha1>

2
你可以使用git reset来移除错误的提交(包括撤销)。
假设你的历史记录如下:
good -> good -> good -> rubbish -> revertRubbish

你可以简单地执行git reset HEAD~2使你的版本历史记录如下所示:
good -> good -> good 

如果涉及更复杂的内容,请说明。
good1 -> good2  -> rubbish -> good3 -> good4 -> revertGood4 -> revertGood3 -> revertRubbish

你可能需要做类似于以下的操作:

git reset HEAD~6  //Deletes last 6 commits
git cherry-pick good3
git cherry-pick good4

由此产生了历史记录

good1 -> good2  -> good3* -> good4*

星号表示代码更改将相同,只是哈希值不同于原始提交。

除非你在重新编写公共历史,否则这是不好的。 - Roman
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - KevinL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接