Подтвердить что ты не робот

Что означает "фатальный: плохая ревизия"?

В контексте:

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

Я уверен, что HEAD ~ 2 существует.

EDIT Янтарь правильный. Я хотел использовать reset вместо revert.

4b9b3361

Ответ 1

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

git checkout HEAD~2 myFile

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

Ответ 2

git revert не принимает параметр имени файла. Вы хотите git checkout?

Ответ 3

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

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

Ответ 4

Git возвращает только принимает commits

Из документов:

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

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

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

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

git checkout HEAD~2 myFile

Ответ 5

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

Я проверил для .git dirs с помощью:

find ./ -name '.git' -print

Ответ 6

Почему вы указываете myFile там?

Git revert возвращает исправления (ы), которые вы указали.

git revert HEAD~2

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

git revert HEAD~2 myfile

возвращает HEAD~2 И myFile

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

git checkout HEAD~2 -- myFile

Ответ 7

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

git rebase -i HEAD ~ 2

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