Как восстановить файлы, добавленные в git, но перезаписанные при оформлении заказа

Нужна помощь!

  1. Я добавил несколько файлов, используя «git add»
  2. Я хотел проверить другие файлы и случайно запустил "git checkout -f"

Я знаю, что можно вернуть эти изменения с помощью reflog и т. д., но я не знаю, как это сделать! Я знаю, что можно получить diff. Мне очень нужны эти изменения.

Любые идеи??


person sr09    schedule 19.05.2014    source источник
comment
Вы можете попробовать что-то вроде это и посмотреть, сможете ли вы найти что-то. Однако Макото прав, -f означает «Поверь мне, я знаю, что делаю». Не просто слепо добавляйте его в команды.   -  person R0MANARMY    schedule 19.05.2014
comment
См. также Как восстановить после выполнения :git reset --hard HEAD.   -  person    schedule 19.05.2014
comment
@ R0MANARMY: Я, по общему признанию, в противоречии, так как решение для OP было найдено в git fsck. Я не вижу, чтобы мой ответ был очень жизнеспособным, так как есть способ восстановиться.   -  person Makoto    schedule 19.05.2014
comment
Кстати, хорошая работа, чтобы понять это (более или менее самостоятельно), вместо того, чтобы просто жаловаться, что люди пытаются закрыть ваш вопрос =).   -  person R0MANARMY    schedule 19.05.2014


Ответы (1)


Хорошо, я исправил это. Файлы, добавленные в индекс, можно восстановить. Файлы можно восстановить, только если они были либо добавлены, либо спрятаны.

Вот шаги:

Шаг 1:

git fsck −−lost-found

Это даст вам список идентификаторов висячих BLOB-объектов — то, что вы добавили, но не зафиксировали (перед принудительной проверкой)

Шаг 2:

git show <ID>

Это идентификатор, связанный с этим оборванным BLOB-объектом. Он выведет содержимое файла на консоль.

Вот и все!

Мне помог этот поток: Восстановить из git reset --hard?

person sr09    schedule 19.05.2014
comment
Я действительно очень горжусь тем, что вы нашли этот ответ. Я не знал, что есть вариант с git fsck. Видимо, мне нужно проводить больше времени в сантехнике! - person Makoto; 19.05.2014
comment
@Makoto, как только вы git add, вы сообщаете Git о файлах, как показано в решении. На самом деле это дубликат других вопросов, которые были заданы, мне просто трудно найти хороший канонический вопрос, поскольку он время от времени появляется. - person ; 19.05.2014
comment
Затем, когда вы найдете файл с git show, как вы его получите? - person young_souvlaki; 23.11.2020