“致命:糟糕的修改”是什么意思?

时间:2013-01-27 18:41:41

标签: git

在上下文中:

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

我确定HEAD~2存在。

编辑琥珀色是正确的。我打算使用reset代替revert

9 个答案:

答案 0 :(得分:72)

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

git checkout HEAD~2 myFile

revert命令用于恢复整个提交(并且它不会将恢复为提交;它实际上只是恢复 make 的更改提交 - 如果您在指定的提交之后有另一个提交,则不会还原以后的提交。

答案 1 :(得分:19)

我在IntelliJ中遇到了这个错误,这些答案都没有帮助我。所以我在这里解决了这个问题。

不知何故,我的一个子模块添加了一个.git目录。删除后返回所有git功能。

答案 2 :(得分:7)

git revert不接受文件名参数。你想要git checkout吗?

答案 3 :(得分:6)

我有一个"致命:糟糕的修订"使用Idea / Webstorm,因为我在另一个内部有一个git目录,没有使用正确的子模块或子树。

我检查了.git dirs:

find ./ -name '.git' -print

答案 4 :(得分:4)

Git revert只接受提交

来自文档:

  

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

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

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

要更改一个文件以匹配之前的提交,请使用git checkout

git checkout HEAD~2 myFile

答案 5 :(得分:1)

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

答案 6 :(得分:0)

为什么要在那里指定myFile

Git revert会恢复您指定的提交。

git revert HEAD~2

恢复HEAD~2提交

git revert HEAD~2 myfile

还原HEAD~2myFile

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

git checkout HEAD~2 -- myFile

答案 7 :(得分:0)

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

git rebase -i HEAD~2

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

答案 8 :(得分:0)

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