Как заменить поврежденные объекты Git новыми, созданными из моих файлов, и это нормально - PullRequest
8 голосов
/ 02 февраля 2010

Мое приложение в моей файловой системе работает просто отлично. Все тесты пройдены.

Я единственный разработчик, использующий Git в основном для использования Heroku, а также для резервного копирования.

Git перестал работать из-за поврежденных объектов.

Я получаю ошибки, которые выглядят так:

steven-nobles-imac-200:drominay steven$ git push heroku master
error: inflate: data stream error (invalid distance too far back)
fatal: object 990ad2766afa2e2002eea265225ad160e73eacd2 is corrupted
error: pack-objects died with strange error

(и многие другие ошибки, все ссылаются на поврежденные объекты.)

Как заставить Git выбрасывать поврежденные объекты и заменять их новыми объектами, созданными из рабочей копии моего приложения?

Git init не решил проблему.

Спасибо!

1 Ответ

10 голосов
/ 02 февраля 2010

Вам нужно использовать git-fsck. В руководстве есть подробности , но суть в том, что git-fsck позаботится о том, чтобы репозиторий был внутренне согласованным, и перечислил отсутствующие объекты, затем вы можете использовать git hash-object -w <correct-file>, чтобы поместить данный файл в хранилище. Если файл, переданный hash-object, действительно поврежден, ваш репозиторий снова завершен:).

Обновлено для добавления: Git repair делает то же самое, но автоматически:).

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