Как восстановить файлы, которые были удалены с помощью git? - PullRequest
4 голосов
/ 06 мая 2010

Я git noob, а git только что удалил кучу важных файлов. Как мне их вернуть?

У меня есть репо на моей локальной машине. Чтобы попасть в git, я просто щелкаю правой кнопкой мыши по папке своего проекта и выбираю «git bash here». Это воспитывает мастера, где я делаю все мои игры.

Итак, у меня были некоторые изменения на сцене, и я сделал:

git add .

Это устроило кучу изменений. Я заметил, что я не хочу, чтобы некоторые из этих постановок были, поэтому я решил, что я попытаюсь что-либо удалить. Я сделал это:

git reset --hard HEAD^

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

Как мне вернуть эти файлы? Если я не могу сделать это через git, есть ли другой способ?

Ответы [ 4 ]

9 голосов
/ 06 мая 2010

Я исправлен относительно своего первоначального совета (см. Историю изменений).В качестве покаяния я нашел самый простой способ восстановить потерянные файлы из git:

git fsck --lost-found
ls .git/lost-found/other

К сожалению, имена файлов потеряны, но все содержимое должно быть там как отдельные файлы.

1 голос
/ 06 мая 2010

Звучит так, как будто вам нужна старая HEAD (в отличие от HEAD ^), и в этом случае вы можете просто проверить эту ревизию. Используйте git reflog, чтобы показать предыдущие заголовки и найти нужный коммит, а затем проверить его.

Если вы хотите, чтобы файлы, которые вы поставили перед сбросом, см. В других ответах.

0 голосов
/ 06 мая 2010

Из этого SO-Вопрос :


Вы можете (с некоторой работой) восстановить состояние файла при последнем "git add ". Вы можете использовать

$ git fsck --cached --no-reflogs --lost-found --unreachable HEAD

и затем проверьте файлы в каталоге '.git/lost-found/blob/'.

Пожалуйста, прочитайте git fsck manpage: Я не проверял вышеуказанный вызов.


0 голосов
/ 06 мая 2010

Нет, с

git reset --hard HEAD^

изменения возвращаются к последнему коммиту и теряются навсегда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...