Мой репозиторий git как-то пошатнулся - я загрузил msysgit сегодня утром, и вместо имени ветки, отображаемого после текущего каталога, он говорит: «((ref: re ...))», «git status» сообщает обо всем как о новый файл, «git log» и «git reflog» сообщают мне «фатальная: плохая ревизия по умолчанию« HEAD »» и так далее.
Выполнение «git reflog --all» или «gitk --all» показывает мне, что остальная часть репозитория не повреждена, но похоже, что ветка, над которой я работал, только что исчезла, что объясняет, почему HEAD, похоже, не существует / указать на что угодно.
Я знаю, что git хранит все виды информации, и я предполагаю, что мои коммиты каким-то образом просто осиротели, поэтому есть ли какая-то команда, которая покажет мне эти коммиты, чтобы я мог сбросить для них HEAD?
РЕДАКТИРОВАТЬ: О, дорогой. Я обнаружил «git fsck», и «git fsck --full» сообщает «фатальный: объект 03ca4 ... поврежден». Что, черт возьми, я могу с этим поделать?
РЕДАКТИРОВАТЬ: О, дорогой, дорогой. Я проверил другую ветку, а затем попытался воссоздать исходную ветку с тем же именем, используя 'git checkout -b lostbranchname', и git сообщает: «Ошибка: невозможно разрешить ссылки refs / Heads / lostbranchname: нет ошибки, фатальный: сбой» заблокировать ссылку для обновления: нет ошибки ». «Нет ошибки» должно быть особенно неприятной ошибкой. Так что похоже, что он все еще висит, но не может быть использован и не может быть убит.
РЕДАКТИРОВАТЬ: Супер пупер, о боже. Я сделал кучу распаковки, переупаковки и замены вещей, как предлагается здесь: Как восстановить объекты Git, поврежденные в результате сбоя жесткого диска? , но теперь я получаю еще один хэш, который считается поврежденным, из-за чего-то столь же безобидного, как 'git status'. Я думаю, что все это залито из шланга. Git прекрасный и все такое, но я не должен иметь дело с такими вещами.
git checkout -b lostbranchname- если вас интересует только имя ветки (а не ее содержимое), вы можете вручную удалить (или переименовать).git/refs/heads/lostbranchname- это, надеюсь, поможет.