Как восстановить git-репозиторий, случайно удаленный до совершения чего-либо - PullRequest
0 голосов
/ 22 сентября 2018

Я решил попробовать GitHub впервые и уже успел удалить все мои файлы в моем наиболее важном проекте во время игры.Вот моя история консоли:

git init
git remote add origin https://github.com/...
git add .
git config --global user.email (...)
git config --global user.name (...)
git reset --hard   // amazing move by me

Я искал много способов восстановить это.Рекомендуется: git fsck --lost-found, но возвращается только:

missing tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
dangling tree 3178c349021f733a9fa7fa0fabd2ac34f8841bdd

и без BLOB-объектов.Так нет ли надежды восстановить его?

1 Ответ

0 голосов
/ 22 сентября 2018

Это странно, потому что missing tree и dangling tree не могут произойти, если не было сделано или было сделано коммитов.Это git write-tree, который строит древовидные объекты из индекса (или git hash-object -w -t tree, но это сложно использовать).(Ну, отсутствующее дерево - это пустое дерево - я думал , что хеш-идентификатор звучал знакомо! - так что это немного менее странно.)

Тем не менее, однако выдойдя до этого момента, объект висячее дерево , вероятно, является тем, что имеет ваши хэш-идентификаторы BLOB-объектов.Используйте git show или git ls-tree -r для получения имен файлов и хэш-идентификаторов BLOB-объектов, затем используйте git show или git cat-file -p для каждого BLOB-идентификатора, чтобы получить содержимое файла, и сохраните его под именем, найденным в дереве..

Или вы можете использовать трюк eftshift0 : превратить свисающее дерево в дерево коммита.Это даже лучше / удобнее.(eftshift0 должен превратить это в ответ, который вы должны принять :-))

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