Как исправить поврежденный древовидный объект git
У меня есть локальная копия репозитория, у которого больше нет удаленного доступа к нему.
Я пытаюсь вытолкнуть это репо на новый пульт, но каждый раз, когда я получаю это сообщение,
error: Could not read 9eefe9305253b2c039a54cbc8aa22f7f8e6e8790
fatal: bad tree object 9eefe9305253b2c039a54cbc8aa22f7f8e6e8790
В подобных вопросах я читал, что одним из способов исправить это является извлечение этого объекта из других копий репозитория или выполнение жесткого reset. Я не могу сделать ни одно из них, так как у меня нет другой копии этого репо.
Есть ли способ просто удалить эту фиксацию или какое-то другое решение, которое позволит мне перетащить репо на новую историю хранения удаленных файлов?
Ответы
Ответ 1
Чтобы исправить проблему и не потерять какие-либо данные (при условии, что это дерево является единственным отсутствующим объектом, что я сомневаюсь), вы можете попробовать следующее:
- проверить родительскую фиксацию фиксации с деревом
- попробуйте git cat-file -p с именем проблемной фиксации, чтобы узнать, что говорит сообщение фиксации (надеюсь, он скажет вам, что изменилось)
- теперь вы можете определить изменения, которые были сделаны, и из этого можно ожидать, что структура каталогов будет выведена.
- Если 3 работали, вы можете создать свое дерево вручную, используя текстовый редактор и компрессор zlib. Записями в файле tee будут другие древовидные объекты или капли. Надеемся, что большинство файлов и папок разделены (не имеют изменений) между двумя коммитами. Это позволит вам повторно использовать большинство записей из древовидного объекта проверочного фиксации.
Ответ 2
Просто закройте приложение, с которым вы обращаетесь к git, и перезапустите. Работал для меня для xcode-iOS.
Ответ 3
У меня была эта проблема. Перезагрузка моего компьютера действительно исправила его, поэтому сначала попробуйте сначала, прежде чем делать что-либо еще. Или, может быть, мне просто повезло, но стоит сделать это!
Ответ 4
У меня есть мой git repo в каталоге, который также находится в папке OneDrive на моем компьютере. Если вы используете OneDrive на другой машине, нажмите из репо на этом компьютере, а затем снова вытащите/вытащите его из своей машины.