Можно ли восстановить удаленные неотслеженные файлы в git?
допустим, вчера я сделал некоторые изменения в моей главной ветви, и я забыл добавить, зафиксировать их. а утром я сделал
git reset --hard
можно ли восстановить удаленные файлы в данной ситуации ?
6 ответов
некоторые лучшие IDEs отслеживают ваши файлы как локальную историю. Если вы удалили файлы извне (скажем, git reset
) вы должны иметь возможность щелкнуть в своей IDE в Родительском каталоге и выбрать "сравнить с локальной историей".
Я успешно использовал эту функцию в PHPStorm
IDE, когда мои неотслеженные файлы были уничтожены какой-то утилитой...
git reset --hard
- Это очень опасная команда, так что будьте осторожны, когда вы используете его в следующий раз :)
Если у вас нет фиксации для этих файлов, похоже, у вас нет шансов восстановить их.
в противном случае команда reflog может вам помочь.
(Примечание: шаги, похоже, немного изменились, так как принятый ответ был опубликован. Но идея остается прежней.)
чтобы добавить к принятому ответу, я смог восстановить удаленные файлы с помощью Webstorm 2016.
- во-первых, я потерял свой файл, делая принудительную очистку с помощью git
git clean -f
. -
восстановить его, я пошел в Webstorm и сделал следующие действия:
перейти к проекту вкладка для вашего проекта, щелкните правой кнопкой мыши, чтобы перейти к "показать историю" в разделе "локальная история". (как показано на этом рисунке.)
Как только "показать историю" нажата, можно увидеть всплывающее окно с "внешними изменениями - > Revert" в нем. Нажмите, чтобы вернуть нужные файлы справа. (как показано на рисунке.)
после вышеуказанных 2 шагов вы увидите, что ваш файл возвращается на вкладку "проект". 'Краеведение' всплывающее покажите что-то вроде этого прилагаемого изображения. возврат к внешним изменениямвы получите возможность получить его добавить в Git.
чтобы отследить его, просто сделайте
git reset HEAD <filename>
из командной строки.
вы не можете получить доступ к предыдущей версии неотслеженных удаленных файлов из git, потому что, coruse, они не существуют. Я бы восстановил их из некоторой резервной копии (возможно, есть скрытые резервные файлы, оставленные ide / editor?), или, в альтернативном случае, я бы избегал слишком много работать над этой файловой системой и начал искать инструменты восстановления.
git reset --hard
не будет удалять неотслеженные файлы. будет.
git add
файлы, не git commit
их, а затем запустить git reset --hard
файлы будет будут потеряны.
но это нормально, так как они могут быть восстановлены, как показано в ответ. (Ну, до следующего git gc
).