Подтвердить что ты не робот

Не удается вытащить, git не может решить ссылку ORIG_HEAD

потянув в мой репозиторий git с нашего центрального сервера, эта ошибка возникла:

$ git pull origin master

From http://aaa/repo
 * branch            master     -> FETCH_HEAD
error: unable to resolve reference ORIG_HEAD: No such file or directory
fatal: Cannot lock the ref 'ORIG_HEAD'.

Я пробовал git gc (с --prune = now) и искал аналогичную ошибку, к сожалению, не повезло.

4b9b3361

Ответ 1

У меня была эта проблема, и я решил ее, удалив файл .git/ORIG_HEAD, затем снова выполнив попытку. Файл .git/ORIG_HEAD был 0 байтами вместо ссылки git, которую он должен был содержать, поэтому я просто избавился от него.

Ответ 2

Проверьте git remote prune origin, упомянутый в дополнение к git gc --prune=now в разделе git pull, не удалось выполнить "исправление ссылки" , "не удалось обновить локальную ссылку" ..

Если у вас есть .git/rebase-merge, подумайте об удалении его (как в git rebase и удаленных перезагружающихся ветках, вызвавших сообщение об ошибке "Interactive rebase уже началось" ")

Проверьте также содержимое .git/HEAD, как в эту проблему.

Если это какая-то некорректная репо (см. "Git поврежденная ветвь мастера" ), попробуйте сначала снова клонировать ваше репо и повторно применить ваши текущие изменения поверх этого репо (через git format-patch, если вам нужно)

Ответ 3

Этот ответ не решает проблему ОП, но решает подобный.

У меня была аналогичная проблема (я получил error: cannot lock ref ... is at ... but expected ...), но это было потому, что в репо с тем же именем было два ветки, но с другим случаем. Возможно, этот ответ мог помочь людям, которые пришли сюда, я не смог найти ответ в другом месте. Я удалил одну из ветвей, а затем удалил соответствующую ссылку: .git/ref/.../branch_name, затем git потянул. Это происходит из-за того, что я работаю над файловой системой, не учитывающей регистр, в то время как две ветки были нажаты на файловую систему, чувствительную к регистру.

Например, две ветки BRANCH1 и BRANCH1, и оба они находятся под origin remote. Сначала удалите одну из ветвей, например BRANCH1. Затем удалите его ref:

rm .git/refs/remotes/origin/BRANCH1

Тогда git pull, и это должно быть хорошо.

Ответ 4

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

Ответ 5

Мне пришлось удалить .git/ORIG_HEAD.lock, а не (просто) .git/ORIG_HEAD.