撤销一个 git am --abort 命令

6
我想我已经失败了,但有没有办法撤销一个git am --abort命令?
我正在使用am命令,出现了一些冲突(如预期的那样),我解决了这些冲突,但我没有像通常一样执行git am --continue,而是直接提交了。然后当我回来时,我注意到我仍然处于am模式,但我没有执行git am --skip,而是执行了git am --abort,现在我的提交已经消失了。
当然,我可以再次进行这个过程,但我不想再次进行冲突解决。
编辑:我解决了我的特定问题,但我仍然很好奇是否存在更强大的解决方案。即使补丁已经消失,也可以撤销放弃操作。
1个回答

3
原来 Git 已经记住了我的冲突解决方式。"修复" 的方法就是重新运行 am 命令,但不保证在所有情况下都有效。另外,如 torek 建议的那样,git reflog 命令也可以起到相同的作用。

你必须开启rerere。如果没有开启,任何添加的blob或完成的提交在垃圾回收之前仍然可以找到,但使用rerere会更容易! :-) - torek
也许我没有找得够仔细,在这种情况下我应该在哪里找到已完成的提交? - diedthreetimes
没关系,我明白你在说什么,而且我已经打开了rerere。如果我没有打开它,我该怎么找到它们呢? - diedthreetimes
1
我不确定它们是否在引用日志中。如果是的话,“在引用日志中”(git reflog将显示HEAD的日志,并且它们可能在其中)。如果它们不在引用日志中,git fsck --lost-found将会把提交和blob ID放入.git/lost-found/中。请参阅git fsck文档。 - torek
非常感谢。由于我的分支处于一种奇怪的状态,正在进行变基但无法继续,我差点失去了两个小时的工作。我不得不放弃变基,这样就摆脱了所有的更改。我很高兴git中有这个命令。 - BrightIntelDusk

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