Можно ли восстановить удаленные неотслеженные файлы в git?

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

git reset --hard

можно ли восстановить удаленные файлы в данной ситуации ?

6 ответов


некоторые лучшие IDEs отслеживают ваши файлы как локальную историю. Если вы удалили файлы извне (скажем, git reset) вы должны иметь возможность щелкнуть в своей IDE в Родительском каталоге и выбрать "сравнить с локальной историей".

Я успешно использовал эту функцию в PHPStorm IDE, когда мои неотслеженные файлы были уничтожены какой-то утилитой...


нет................... Это не так.


git reset --hard - Это очень опасная команда, так что будьте осторожны, когда вы используете его в следующий раз :)

Если у вас нет фиксации для этих файлов, похоже, у вас нет шансов восстановить их.

в противном случае команда reflog может вам помочь.


(Примечание: шаги, похоже, немного изменились, так как принятый ответ был опубликован. Но идея остается прежней.)

чтобы добавить к принятому ответу, я смог восстановить удаленные файлы с помощью Webstorm 2016.

  1. во-первых, я потерял свой файл, делая принудительную очистку с помощью git git clean -f.
  2. восстановить его, я пошел в Webstorm и сделал следующие действия:

    • перейти к проекту вкладка для вашего проекта, щелкните правой кнопкой мыши, чтобы перейти к "показать историю" в разделе "локальная история". (как показано на этом рисунке.)

    • Как только "показать историю" нажата, можно увидеть всплывающее окно с "внешними изменениями - > Revert" в нем. Нажмите, чтобы вернуть нужные файлы справа. (как показано на рисунке.)

    • после вышеуказанных 2 шагов вы увидите, что ваш файл возвращается на вкладку "проект". 'Краеведение' всплывающее покажите что-то вроде этого прилагаемого изображения. возврат к внешним изменениямвы получите возможность получить его добавить в Git.

    • чтобы отследить его, просто сделайте git reset HEAD <filename> из командной строки.


вы не можете получить доступ к предыдущей версии неотслеженных удаленных файлов из git, потому что, coruse, они не существуют. Я бы восстановил их из некоторой резервной копии (возможно, есть скрытые резервные файлы, оставленные ide / editor?), или, в альтернативном случае, я бы избегал слишком много работать над этой файловой системой и начал искать инструменты восстановления.


git reset --hard не будет удалять неотслеженные файлы. будет.

если вы git add файлы, не git commit их, а затем запустить git reset --hard файлы будет будут потеряны.

но это нормально, так как они могут быть восстановлены, как показано в ответ. (Ну, до следующего git gc).