Восстановление файлов из объектов Git - PullRequest
7 голосов
/ 01 июля 2011

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

1 Ответ

6 голосов
/ 01 июля 2011

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

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

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

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

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

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

...