В контексте:
git revert HEAD~2 myFile
fatal: bad revision '/Users/rose/gitTest/myFile'
Я уверен, что HEAD ~ 2 существует.
EDIT Янтарь правильный. Я хотел использовать reset
вместо revert
.
В контексте:
git revert HEAD~2 myFile
fatal: bad revision '/Users/rose/gitTest/myFile'
Я уверен, что HEAD ~ 2 существует.
EDIT Янтарь правильный. Я хотел использовать reset
вместо revert
.
Если вы хотите только вернуть один файл в свое состояние в данной фиксации, вы действительно хотите использовать команду checkout
:
git checkout HEAD~2 myFile
Команда revert
используется для реверсии целых коммитов (и она не возвращает вас к этой фиксации, она фактически просто возвращает изменения, сделанные этим фиксацией, - если у вас есть другая фиксация после указанной вами, позднее commit не будет возвращен).
git revert
не принимает параметр имени файла. Вы хотите git checkout
?
Я получил эту ошибку в IntelliJ, и ни один из этих ответов не помог мне. Итак, вот как я это решил.
Как-то один из моих подмодулей добавил каталог .git
. Все функциональные возможности git вернулись после удаления.
Из документов:
Учитывая один или несколько существующих коммитов, верните изменения, которые связаны с соответствующими патчами...
myFile
intetretted как commit - потому что git revert
не принимает пути к файлу; только совершает
Чтобы изменить один файл в соответствии с предыдущей фиксацией - используйте git checkout
git checkout HEAD~2 myFile
У меня была "фатальная: плохая ревизия" с Idea/Webstorm, потому что у меня был каталог git внутри другого, без использования правильных подмодулей или поддеревьев.
Я проверил для .git
dirs с помощью:
find ./ -name '.git' -print
Почему вы указываете 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 сообщения фиксации, если вы удалите сообщение фиксации и сохраните этот файл, удаленный фиксация автоматически исчезнет...