2014-10-26 4 views
5

Один из наших ребят нажал на коммит, который кажется целым и работает на его компьютере. С тех пор ни один из других компьютеров не может извлекать изменения из удаленного репозитория. ошибка, что каждый получает это:Git не может получить из-за поврежденного коммита

git.exe fetch -v --progress "origin" 

POST git-upload-pack (gzip 1407 to 775 bytes) 
remote: error: Could not read a75720ce47ae8dcc1d0b4c09fcb7d6f70efa390b 
remote: fatal: revision walk setup failed 
remote: aborting due to possible repository corruption on the remote side. 
fatal: protocol error: bad pack header 
git did not exit cleanly (exit code 128) (14368 ms @ 26/10/2014 11:49:05) 

ША (a75720 ...), который не может быть прочитан является ША указанной фиксации.

Мы пробовали разные вещи, но ничего не работает. Запуск git fsck не показывает фиксацию как зависающую, а на удаленном сервере ни одна ветвь не указывает на фиксацию.

Восстановление данных с фиксации не является приоритетом, но снова работает система.

Любые предложения относительно того, как удалить/исправить сломанную фиксацию? Помощь будет принята с благодарностью.

Спасибо!

+0

Чтобы быть ясным, вы запускали 'git fsck' на пульте дистанционного управления и не обнаружили проблем? –

ответ

1

На вашей локальной машине вы можете переустановить своего хозяина до фиксации перед a75720.

Rollback to an old Git commit in a public repo

Тогда вы можете сделать вишневый выбор для остальные совершает. (Вы можете spicify список фиксаций)

How to cherry-pick multiple commits

Тогда, если все, кажется, работает, вы должны сделать усилие толчок.

мерзавец толчок --force происхождения desiredBranch

(указать нужную ветку !!)

от: http://git-scm.com/docs/git-push

--force Обычно, команда отказывается чтобы обновить удаленный ref, который не является предком локального ref, используемого для его перезаписывания. Кроме того, когда используется опция --force-with-lease, команда отказывается обновлять удаленный реф, текущее значение которого не соответствует ожидаемому.

Этот флаг отключает эти проверки и может привести к тому, что удаленный репозиторий потеряет фиксации; используйте его с осторожностью.

Обратите внимание, что --force относится ко всем ссылкам, которые выталкиваются, следовательно, используя его с push.default установлена ​​в соответствии или с несколькими нажимных назначения, настроенного с пультом дистанционного управлением. *. Толчок может перезаписать реф другого , чем ток (включая локальные ссылки, которые находятся за пределами их удаленного аналога). Чтобы заставить нажимать только одну ветвь, используйте + перед refspec, чтобы нажать (например, git push origin + master, чтобы заставить нажать на главную ветку). См. Раздел ... выше для .

Смежные вопросы