2012-01-03 3 views
1

Использование Win7, 64-бит.GIT говорит, что у меня нет коммитов в репо - как восстановить?

Я использую GitExtensions GUI, который работает нормально в течение 3 месяцев. Сегодня я сделал фиксацию, сразу же нажал на мой серверный репо и закрыл. Когда я включил резервную копию позже в тот же день и попытался выполнить другое (локальное) коммит, GitExtensions сказал мне, что я НИКОГДА не выполнял этот репо и не показывал 119 файлов с изменениями.

Очевидно, что что-то обжарилось, поэтому моя первая мысль заключалась в том, чтобы вытащить из моего сервера репо. Угадай, что? Репо сервера также показывает, что я НИКОГДА не выполнял его.

Итак, моя следующая мысль была GitExtensions лжет мне. Поэтому я перешел к Tortoise GIT и сделал «View Log». Угадай, что? GitExtensions не лежит. Tortoise GIT также показывает, что я НИКОГДА не выполнял свое репо.

Когда я физически просматриваю репо, я могу видеть все объектные файлы с разумно выглядящими временными метками, охватывающими 3 месяца, которые я работал над этим проектом.

Как я могу получить GIT для восстановления и осознать, что у меня есть 3 месяца фиксации STILL IN THERE? Единственные статьи, которые я видел, - это то, как восстанавливать отдельные потерянные коммиты, которые должны использовать более раннюю фиксацию в качестве отправной точки. Очевидно, это не поможет мне, так как я не вижу ЛЮБЫХ коммитов.

Благодарим за помощь.

ответ

0

Является ли папка .git еще там? Если это то, где git хранит всю свою информацию. Если нет, то нечего возвращаться. Если нет, то ваш местный git ушел. Если вы .git все еще там, попробуйте запустить git log и посмотреть, что он показывает.

Если ваша .git-папка исчезла, вы сможете сделать «новый» клон со своего сервера, чтобы получить все.

+0

Да, там есть папка .git, и я вижу все объекты, которые там находятся. Был ли «git log» и получил это сообщение: «fatal: bad default revision« HEAD ».» – xpnctoc

+0

И я не могу клонировать с сервера. Удаленное репо демонстрирует то же поведение. Это похоже на инструменты графического интерфейса, которые я использую, испортил коммит, а затем, потому что я сразу же нажал на сервер, это повреждение также было передано на серверное репо. – xpnctoc

+0

Итак, ваш инструмент графического интерфейса сделал принудительный толчок, не спросив вашего ?! – ThiefMaster

1

Во-первых, создайте резервную копию своего хранилища, чтобы все попытки исправить ошибки не ухудшили его.

git fsck может помочь найти и исправить ошибки в репозитории.

git reflog может помочь вам идентифицировать осиротевших и восстановить историю.

Этот ответ на ошибку "bad default revision" может помочь.

Если fsck ничего не делает для вас, моя первая мысль заключалась бы в попытке сбросить HEAD удаленного репозитория обратно на один коммит, а затем попробовать повторный клон.

1

Проверьте, что вы получаете для «git log master» или любой другой ветки. Если это работает, вы можете использовать «git bundle» для явного экспорта коммитов и всех связанных объектов. Прополощите и повторите для других ветвей в .git/refs.

Возможно, было бы лучше свернуть к командной строке, чтобы устранить эту проблему. Загрузите последний msysgit.

+0

Git Extensions имеет инструмент командной строки. – Shay

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

  • Нет связанных вопросов^_^