Восстановление файлов из объектов Git


Я уничтожил всю свою работу и предпочел бы не объяснять, как это произошло. Единственное, что у меня осталось, - это git-объекты. Больше всего на свете я хотел бы восстановить некоторые из утраченных файлов изображений. По размеру объектных файлов я могу сказать, какие они. Есть ли способ превратить их обратно в полезные файлы?

1 7

1 ответ:

Первое: сделайте резервную копию! затем поработайте над копией этой резервной копии.

Если объекты git все еще находятся в правильном каталоге (.git/objects/xx/xxx…), вы можете использовать git fsck --full для обнаружения их в git - он, вероятно, перечислит все объекты в вашем репозитории. теперь ищите те, которые помечены commit и tag, это те, которые вы хотите восстановить.

Я бы, вероятно, использовал скрипт, который создает ветвь для каждого найденного объекта фиксации (например, просто увеличивающиеся числа rescue-1, rescue-2, и т.д.). после использования gitk --all визуализировать все ваши ветви и выбрать верхнюю (самую последнюю). создайте там новую ветвь rescued-master.

Проверьте новую главную ветвь и запустите git branch --no-merge. вы должны получить список разветвленных коммитов, не содержащихся в master. вы, вероятно, хотите дать им новое название филиала тоже.

После того, как вы закончите, удалите все пронумерованные ветви rescue-.

Надеюсь, что это поможет и даст отправную точку.