git pull завершается ошибкой "невозможно разрешить ссылку" "невозможно обновить локальную ссылку" - PullRequest
505 голосов
/ 08 июня 2010

Используя git 1.6.4.2, когда я делаю git pull, я получаю эту ошибку:

error: unable to resolve reference refs/remotes/origin/LT558-optimize-sql: No such file or directory
From git+ssh://remoteserver/~/misk5
 ! [new branch]      LT558-optimize-sql -> origin/LT558-optimize-sql  (unable to update local ref)
error: unable to resolve reference refs/remotes/origin/split-css: No such file or directory
 ! [new branch]      split-css  -> origin/split-css  (unable to update local ref)

Я пробовал git remote prune origin, но это не помогло.

Ответы [ 25 ]

8 голосов
/ 05 июля 2016

Чтобы ответить на этот вопрос очень коротко, эта проблема возникает, когда у вашего местного пользователя есть некоторая информация о пульте, и кто-то меняет что-то, что делает удаленный, и ваши изменения не синхронизированы.

Я получил эту проблему, потому что кто-то удалил удаленную ветку и снова создал с тем же именем.

Для решения таких проблем выполните извлечение или выборку с пульта.

git remote prune origin

или, если вы используете какой-либо графический интерфейс, выполните выборку с пульта.

enter image description here

4 голосов
/ 21 марта 2017

Если git gc --prune=now вам не поможет. (невезение, как я)

Что я сделал, так это удалил проект локально и снова клонировал весь проект.

3 голосов
/ 07 января 2016

Я смог работать с

git remote update --prune
3 голосов
/ 24 марта 2017

Попробуйте это:

git pull origin Branch_Name

Branch_Name, филиал, в котором вы сейчас находитесь.

Если вы наберете только git pull, он также вытянет все остальные созданные ветки.

Так вот почему вы получаете это:

! [new branch]      split-css  -> origin/split-css  (unable to update local ref)
2 голосов
/ 10 марта 2015

Для меня у меня был локальный филиал с именем feature/phase2, а удаленный филиал с именем feature/phase2/data-model. Причиной проблемы был конфликт имен, поэтому я удалил свою локальную ветку (вы можете переименовать ее, если в ней есть все, что вам нужно сохранить)

1 голос
/ 19 июля 2018

Я использовал git prune origin, и это сработало.

1 голос
/ 27 мая 2016

У меня была такая же проблема.я выполняю следующие шаги

1) переключите вашу ветвь, у которой возникли проблемы, на другую ветку

2) снова удалите эту ветку

3).

Примечание: - Вы можете спрятать незафиксированные изменения и вернуть их снова.

0 голосов
/ 07 ноября 2018

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

Однажды я нажал на ветку с именем «feature / subfeature», имея ветку «feature» на пульте.

Эта операция работала нормально без каких-либо ошибок на моей стороне, но когда мои коллеги извлекли и / или вытащили какую-либо ветку, у всех них было одно и то же сообщение об ошибке unable to update local ref, cannot lock ref 'refs/remotes/origin/feature/subfeature.

Это было решено удалением ветки feature на удаленном компьютере (git push --delete origin feature) и последующим запуском git remote prune origin в репозитории моих коллег, который генерировал сообщения, включающие * [pruned] origin/feature.

Итак, я предполагаю, что git fetch пытался создать subfeature ref в папке feature внутри git (.git / ...), но создать папку не удалось, потому что уже было feature ref.

0 голосов
/ 30 мая 2016

Получил эту проблему при попытке клонировать из созданного git bundle файла, ни один из других ответов не сработал, потому что я не мог клонировать репозиторий (поэтому git gc и удаление / редактирование файлов не могло быть и речи).

Однако был и другой способ исправить это - исходный файл .bundle начинался с:

# v2 git bundle
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d HEAD
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d refs/heads/master
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d refs/heads/master

PACK.......p..x...Kj.0...: (and so on...)

Простое удаление четвертой строки с помощью vim устранило проблему.

0 голосов
/ 01 мая 2018

Столкнулся с той же проблемой, когда хранилище было удалено и создано с тем же именем. Это сработало только когда я переустановил удаленный URL , как показано ниже;

git origin set-url origin [GIT_REPO_URL]

Проверьте удаленный URL:

git remote -v

Теперь все команды должны работать как обычно.

...