“致命的错误修订”是什么意思?


77

在上下文中:

git revert HEAD~2 myFile
fatal: bad revision '/Users/rose/gitTest/myFile'

我确定HEAD〜2存在。

编辑琥珀色是正确的。我本意使用reset而不是revert


1
@ AD7six,Rose Perrone-对不起,这是我的默认回应,要求人们在有关问题答案的注释中进行编辑。:)没有进一步检查。干杯!
2013年

Answers:


80

如果您只想在给定的提交中将单个文件恢复到其状态,则实际上您想使用以下checkout命令:

git checkout HEAD~2 myFile

revert命令用于恢复整个提交(和它不会回复你犯下;它实际上只是恢复的变化做出该承诺的-如果你有另一个你指定一个后提交,提交后不能被还原)。


太棒了,就像一个魅力。我可以补充一点,如果您想要文件的特定版本,也可以指定特定提交的哈希(以我的情况为准),而不是HEAD〜2。
麦迪逊·托巴尔

20

我在IntelliJ中遇到此错误,这些答案都没有帮助我。所以这是我解决的方法。

我的一个子模块以某种方式添加了一个.git目录。我删除所有git功能后都将其返回。


是的,对我有用。问题是,如果您要使用composer管理模块,则下一次更新可能会.git再次创建。
dickwan '16

2
我在IntelliJ中将Version Control首选项设置/Users/myusername/Developer/myProject/<Project>,错误对我也消失了。其中有一些其他文件夹.git,IntelliJ一定很困惑。
Michael Shopsin

谢谢!那也对我有用!我在主存储库中有另一个存储库(有意使用),PyCharm感到困惑,但仅用于几个文件。
萨沙(Sasha Miroshnychenko)


6

我对Idea / Webstorm进行了“致命修订”,因为我在另一个目录中有一个git目录,而没有使用正确的子模块或子树。

我用以下方法检查了.gitdirs:

find ./ -name '.git' -print

4

Git恢复仅接受提交

从文档:

给定一个或多个现有提交,还原相关补丁引入的更改...

myFile 被解释为提交-因为 git revert不接受文件路径;只提交

更改一个文件以匹配先前的提交

要更改一个文件以匹配先前的提交-使用 git checkout

git checkout HEAD~2 myFile

1

我也遇到了与Intellij类似的问题。问题是有人将我要在Intellij中比较的文件添加到了.gitignore,而没有从Git实际删除文件。


0

你为什么要指定myFile呢?

Git还原将还原您指定的提交。

git revert HEAD~2

恢复HEAD~2提交

git revert HEAD~2 myfile

还原HEAD~2myFile

我带的myFile是您要还原的文件?在那种情况下使用

git checkout HEAD~2 -- myFile


0

如果要删除任何提交,则可能需要使用git rebase命令

git rebase -i HEAD〜2

它会显示最后2条提交消息,如果您删除提交消息并保存该文件,则删除的提交将自动消失...


0

在我的情况下,我有一个不一致的状态,该文件(带有错误的提交哈希)实际上没有添加到Git中,这与IntelliJ的状态有些冲突。在命令行上使用git手动添加文件对我来说解决了这个问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.