Как исправить поврежденный древовидный объект 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 на другой машине, нажмите из репо на этом компьютере, а затем снова вытащите/вытащите его из своей машины.