Что означает "фатальный: плохой пересмотр"?


в контексте:

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

Я уверен, что голова~2 существует.

EDIT Янтарь правильно. Я имел в виду, чтобы использовать reset вместо revert.

9 55

9 ответов:

Если вы хотите вернуть один файл в состояние, в данный коммит, вы на самом деле хотите использовать :

git checkout HEAD~2 myFile

The revert команда используется для возврата всех коммитов (и она не возвращает вас до это фиксация; это на самом деле просто возвращает изменения составила по этой фиксации-если у вас есть еще одна фиксация после указанной вами, более поздняя фиксация не будет возвращена).

Я получал эту ошибку в IntelliJ, и ни один из этих ответов не помог мне. Так вот как я это решил.

Как-то один из моих подмодулей добавил a . Все функции git вернулись после того, как я удалил его.

git revert не принимает параметр filename. Ты хочешь git checkout?

у меня была" фатальная : плохая ревизия " с Idea / Webstorm, потому что у меня был каталог git внутри другого, без использования правильных подмодулей или поддеревьев.

Я проверил .git dirs с :

find ./ -name '.git' -print

git revert принимает только коммиты

документы:

учитывая один или несколько существующих коммитов, отмените изменения, внесенные соответствующими исправлениями ...

myFile интерпретируется как фиксация-потому что git revert не принимает пути к файлам; совершает только

измените один файл в соответствии с предыдущим фиксацией

чтобы изменить один файл в соответствии с предыдущей фиксацией-используйте git checkout

git checkout HEAD~2 myFile

У меня была аналогичная проблема с Intellij. Вопрос в том, что кто-то добавил файл, который я пытаюсь сравнить в Intellij для .gitignore, фактически не удаляя файл из Git.

почему вы задание myFile есть?

в git revert отменяет изменения в коммит(Ы), который вы укажете.

git revert HEAD~2

возвращает HEAD~2 commit

git revert HEAD~2 myfile

возвращается HEAD~2 и myFile

Я myFile - это файл, который вы хотите вернуться? В таком случае используйте

git checkout HEAD~2 -- myFile

Если вы хотите удалить любую фиксацию, вам может потребоваться использовать команду git rebase

git rebase-i HEAD~2

Он покажет вам последние 2 сообщения фиксации, если вы удалите сообщение фиксации и сохраните этот файл, удаленный фиксация автоматически исчезнет...

в моем случае у меня было непоследовательное состояние, когда рассматриваемый файл (с плохим хэшем фиксации) фактически не был добавлен в Git, это каким-то образом столкнулось с состоянием IntelliJ. Вручную добавить в файл с помощью Git в командной строке Исправлена проблема для меня.