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

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

git reset --hard

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

Ответы

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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

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

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

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

Ответ 5

git reset --hard не удалит ненужные файлы. git clean, однако.

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

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

Ответ 6

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

Ответ 7

git fsck может вам помочь.

Если вы еще не выполнили сборку мусора, она может вам помочь. Когда у вас есть идентификатор BLOB-объекта, вы можете сказать:

git show {blobId}

Ответ 8

В Intellij, как восстановить неотслеживаемые отмены изменений

Шаг 1. Выберите папку, щелкните по ней правой кнопкой мыши

Setp 2: Перейти к локальной истории, а затем перейти к Показать историю

enter image description here

Шаг 3: Выберите неотслеживаемые файлы, которые вы случайно вернули. затем выберите эти файлы на правой боковой панели и отмените изменения, вы получите файлы в обратном формате.

enter image description here