为什么我使用提交哈希时,Git Revert 告诉我“错误的修订版(bad revision)”?

8
我想回退到之前的git提交记录,但是却收到了“bad revision”错误提示,为什么会这样?以下是对话记录(作者名已删除):
Ellen@ELLEN-PC /c/Users/Susan Mills/git/hello-github (master)
$ git status
# On branch master
nothing to commit, working directory clean

Ellen@ELLEN-PC /c/Users/Susan Mills/git/hello-github (master)
$ git log | head
commit e3eb30cc7ca6d4cd10de755b63821cad75da1e83
Date:   Wed Feb 5 17:54:32 2014 -0800

    I changed my greeting.

commit 063ac580e28bab524286dac7b0a8f88d9e7d365f
Date:   Mon Feb 3 07:53:19 2014 -0800

Ellen@ELLEN-PC /c/Users/Susan Mills/git/hello-github (master)
$ git revert 9e7d365f
fatal: bad revision '9e7d365f'

我为什么会收到“错误的版本”,我该怎么办?我在Windows 7上使用git bash,我的源存储库是Github。
4个回答

8
当你使用SHA1的简短版本时,你使用前缀而不是后缀。因此你实际上想要说的是:
git revert 063ac580

1

使用哈希的开头作为标识,例如:

git revert 063ac580e2

1

你试图还原不存在的内容。以9e7d365f开头的SHA不在您的代码库中。


无法恢复从回收站中移除的版本?例如,如果提交被强制推送到远程repo中而被删除,则可以在活动日志中看到修订ID,但实际上不存在这样的修订。 - Petrunov
是的,这是可能的。但这不是OP遇到的问题。 - Schleis

1
在我的情况下,我从GitHub复制了完整的SHA。然而,由于PR已经合并,GitHub创建了一个具有不同哈希值的不同提交,因此该提交不再存在。
我运行git log以获取实际的SHA,现在它可以工作了。

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