2013-06-25 1 views
11

Я только что получил сообщение об ошибке после недавней фиксации с помощью Tortoise Git:Ошибка TortoiseGit - не удалось получить все ссылки. libgit2 вернулся: поврежден свободно ссылочный файл

«Не удалось получить все реф libgit2 возвращаемых:. испорчены рыхлой ссылки файл»

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

Любые идеи о том, как исправить это?

+0

с такой же проблемой ... пришлось отменить весь репозиторий, а теперь через 1 день после его повторения :( – Ami

+1

Возможно, вам стоит взглянуть на [Git: «Corrupt loose object»] (http://stackoverflow.com)/questions/4254389/git-corrupt-loose-object) и [Как восстановить поврежденный файл в git] (http://stackoverflow.com/questions/7650008/how-to-recover-from-a-corrupt -loose-file-in-git) –

+0

Возможно, это поможет ?: [TortoiseGit - libgit2 возвращается: Refspec 'refs/heads/origin/HEAD' не найден] (http://stackoverflow.com/questions/18575714/tortoisegit-libgit2-return-refspec-refs-heads-origin-head-not-found) –

ответ

14

Ваши ссылки хранятся в исходном репозитории (в .git) в каталогах (именованных для каждой ветви) в каталоге «refs». Проблема в том, что один из этих файлов поврежден. Если вы проверите код here, вы увидите, что проблема заключается в том, что файл ref меньше 40 байт или имеет 41-й байт, который не является пространством (или вкладкой, новой линией и т. Д.). Найдите файлы в каталоге .git/refs, и вы обнаружите, что это плохо. Он должен содержать 40-символьный хэш коммита, к которому относится эта ветка. Вы можете безопасно исправить это, используя Блокнот.

+0

Работал для меня. Я смог скопировать удаленный файл ref поверх локального поврежденного и taadaa! –

+1

Прежде всего, спасибо вы cliffordheath ... Я получил эту ошибку poppin g после выполнения ** FETCH ** с ** PRUNE **. После прочтения вашего ответа. Я просмотрел файлы фида филиала в * .. \. Git \ refs \ remotes \ origin *. Файл ** HEAD ** указывался на главную ветку как * ref: refs/remotes/origin/master *. В нашем хранилище главный/главный филиал не является хозяином своей другой ветки * ref: refs/remotes/origin/our-master * ... Vola. Это сработало ... Еще раз спасибо @cliffordheath ... –

+0

После удаления главной ветви и изменения HEAD в ветку anather на моем удаленном ретрансляторе Git-сервера командой 'git symbolic-ref HEAD refs/heads/ '. Я получил эту ошибку в местных репозиториях. Исправлено с помощью 'git remote set-head origin ' на любом локальном репо. Или просто сделайте git clone с нуля. – it3xl