Я получаю эту ошибку для тянуть:
Ваша конфигурация указывает на слияние с ref 'refs /heads / feature / Sprint4 / ABC-123-Branch' с пульта дистанционного управления, но такой ссылки не было получено.
Эта ошибка не подходит ни для одной другой ветки.
Особенностью этой ветки является то, что она создается из предыдущего коммита другой ветки.
Мой конфигурационный файл выглядит так:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "origin"]
url = <url here>
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "new-develop"]
remote = origin
merge = refs/heads/new-develop
[branch "feature/Sprint4/ABC-123-Branch"]
remote = origin
merge = refs/heads/feature/Sprint4/ABC-123-Branch
Ответы:
Что это значит
Ваш апстрим - удаленный,
origin
которому вы звоните, - больше не имеет или, возможно, никогда не имел (невозможно узнать по этой информации) ветку с именемfeature/Sprint4/ABC-123-Branch
. Для этого есть одна частая причина: кто-то (возможно, не вы, или вы помните) удалил ветку в этом другом Git-репозитории.Что делать
Это зависит от того, что вы хотите . Смотрите раздел обсуждения ниже. Ты можешь:
обсуждение
Вы должны быть запущены
git pull
(если бы вы работали,git merge
вы бы получили другое сообщение об ошибке или вообще никакого сообщения об ошибке).Когда вы запускаете
git fetch
, ваш Git связывается с другим Git, основываясь наurl
строке в[remote "origin"]
разделе вашей конфигурации. Этот Git запускает команду (upload-pack
), которая, помимо прочего, отправляет вашему Git список всех ветвей. Вы можете использовать,git ls-remote
чтобы увидеть, как это работает (попробуйте, это образовательный). Вот фрагмент того, что я получаю при запуске этого для Git-репозитория дляgit
себя:В
refs/heads/
списке всех ветвей , которые существуют на пульте дистанционного управления записью, 1 вместе с соответствующей фиксацией идентификаторов (дляrefs/tags/
записи идентификаторов могут указывать на объекты тег , а не фиксации).Ваш Git берет каждое из этих названий веток и меняет его в соответствии со
fetch
строками в этом жеremote
разделе. В этом случае ваш Git заменяетrefs/heads/master
сrefs/remotes/origin/master
, например. Ваш Git делает это с каждым встречающимся именем ветви.Он также записывает оригинальные имена в специальный файл
FETCH_HEAD
(вы можете увидеть этот файл, если загляните в свой собственный.git
каталог). Этот файл сохраняет выбранные имена и идентификаторы.Эта
git pull
команда предназначена для удобства: она выполняетсяgit fetch
на соответствующем удаленном устройстве, а затемgit merge
(или, если это указано в инструкцииgit rebase
) с любыми аргументами, необходимыми для объединения (или перебазировки), как указано в[branch ...]
разделе. В этом случае ваш[branch "feature/Sprint4/ABC-123-Branch"]
раздел говорит, что нужно извлечьorigin
, а затем объединить с любым идентификатором, найденным под именемrefs/heads/feature/Sprint4/ABC-123-Branch
.Поскольку под этим именем ничего не найдено,
git pull
жалуется и останавливается.Если вы выполняете это как два отдельных шага,
git fetch
а затемgit merge
(илиgit rebase
), ваш Git будет смотреть на ваши кэшированныеremotes/origin/
ветки удаленного отслеживания, чтобы увидеть, что объединить или перебазировать. Если когда-то была такая ветвь, у вас все еще может быть ветка удаленного отслеживания. В этом случае вы не получите сообщение об ошибке. Если такой ветки никогда не было или вы работалиgit fetch
с--prune
(которая удаляет мертвые ветки удаленного отслеживания), так что у вас нет соответствующей ветки удаленного отслеживания, вы получите жалобу, ноorigin/feature/Sprint4/ABC-123-Branch
вместо этого будет указана ссылка .В любом случае , мы можем заключить, что
feature/Sprint4/ABC-123-Branch
не существует в настоящее время на удаленном имениorigin
.Возможно, он существовал когда-то, и вы, вероятно, создали свою локальную ветку из ветви удаленного отслеживания. Если это так, у вас, вероятно, все еще есть ветка удаленного отслеживания. Вы можете выяснить, кто удалил ветку с пульта и почему, или вы можете просто нажать что-то, чтобы воссоздать ее, или удалить ветку удаленного отслеживания и / или вашу локальную ветку.
+1 Ну, все, что он собирается признать , по крайней мере. Но если они специально не спрятали некоторые ссылки, список включает в себя все.
Edit, Jul 2020: есть новый протокол выборки, который может избежать перечисления всего , и только перечислять имена, которые, как говорит ваш Git, он ищет. Это может помочь с репозиториями, которые имеют огромное количество веток и / или тегов. Однако, если ваш Git интересуется всеми возможными именами, вы все равно получите все имена здесь.
источник
git remote prune origin
git fetch --prune origin
, или наборfetch.prune
дляtrue
вашей конфигурации (все три предназначены , чтобы сделать то же самое, хотя и в несколько версий Git некоторые из них не были достаточно надежны).git checkout <your remote branch>
и все будет хорошо (в некоторых случаях).git branch --set-upstream-to=origin/master master
для переключения настройки восходящего потока для вашего локальногоmaster
. Удаление-и-воссоздание имеет это как побочный эффект (при условии, что вы используете стиль DWIMgit checkout master
для его создания), с дополнительным побочным эффектом принуждения вашегоmaster
соответствияorigin/master
.Это также может произойти, если вы / кто-то переименовали ветку. Так что следуйте этим шагам (если вы знаете, что имя ветки переименовано) Предполагая более раннее имя ветви как
wrong-branch-name
и кто-то переименовал его вcorrect-branch-name
Sogit pull
(вы увидите это "Ваша конфигурация указывает ..")git push --set-upstream origin correct-branch-name
git pull
(вы не получите более раннее сообщение)источник
git push
и он не будет работать, если текущая ветвь находится позади его пульта.git pull origin correct-branch-name
достаточно.Проверьте, доступна ли ваша удаленная ветвь. У меня была такая же проблема, наконец-то понял, что удаленная ветка кем-то удалена.
источник
Для меня это была проблема чувствительности к регистру. Моя локальная ветвь была Version_feature2 вместо Version_Feature2. Я перепроверил свою ветку, используя правильный корпус, и затем сработал git pull.
источник
Эта ошибка также может быть получена, когда имя ветви источника имеет некоторую проблему.
Например: исходная ветвь есть,
team1-Team
а локальная ветвь была оформлена какteam1-team
. Тогда этоT
в-Team
иt
в-team
могут вызвать такую ошибку. Это случилось в моем случае. Итак, изменив локальное имя на имя ветви источника, ошибка была решена.источник
В моем случае мне просто не хватало начального коммита в удаленной ветви, поэтому локальная ветвь не нашла ничего, что можно было бы вытащить, и выдало это сообщение об ошибке.
Я сделал:
источник
Я получил похожую ошибку, когда действительной причиной было то, что мой диск был переполнен. После удаления некоторых файлов
git pull
начал работать как я ожидал.источник
Я продолжал сталкиваться с этой проблемой. В моем случае причиной этой ошибки был комментарий @ Jerreck о разнице в именах ветвей. Некоторые инструменты Windows не знают о чувствительности к регистру.
Чтобы отключить чувствительность к регистру в git, выполните эту команду:
Обратите внимание, что это повлияет не только на имена ветвей. Например, если у вас есть «Foo.h» и «foo.h» в одном каталоге (не очень хорошая идея при создании программного обеспечения для Windows), то я подозреваю, что вы не можете отключить чувствительность к регистру.
источник
Просто проверьте, удалил ли кто-нибудь ветку на удаленном компьютере.
источник
В моем случае я удалил исходную ветку, из которой была получена моя текущая ветка. Итак, в файле .git / config у меня было:
simil2.0.5 был удален. Я заменил его с тем же именем ветви:
и это сработало
источник
Вы можете легко связать свою локальную ветку с удаленной, запустив:
источник
Для меня это произошло потому, что я слил ветку dev в master, используя веб-интерфейс, а затем попытался синхронизировать / вытащить, используя VSCode, который был открыт в dev dev. (Странно, что я не смог перейти в master без получения этой ошибки).
Имеет смысл, что он не находит refs /heads / dev - для меня было проще просто удалить локальную папку и снова клонировать.
источник
Я получил именно эту ошибку, когда выполнял "git pull", когда мой диск был заполнен. Создали пространство и все снова заработало нормально.
источник
Вы можете редактировать
~/.gitconfig
файл в вашей домашней папке. Здесь сохраняются все настройки --global.Или используйте
git config --global --unset-all remote.origin.url
и после запускаgit fetch
с URL хранилища.источник
Я столкнулся с той же проблемой, где моя текущая ветвь была dev, и я проверял ветку MR и делал git pull после этого. Простой обходной путь, который я выбрал, - я создал новую папку для MR Branch и сделал там git pull, а затем git clone.
Так что в основном я поддерживал разные папки для отправки кода в разные ветки.
источник
Я просто получил ту же ошибку, когда я не использовал правильный случай. Я мог бы проверить «интеграция». Git сказал мне, чтобы выполнить
git pull
обновление, чтобы обновить мою ветку. Я сделал это, но получил упомянутую ошибку. Правильное название филиала - «Интеграция» с большой буквы «I». Когда я проверил эту ветку и вытащил, она работала без проблем.источник
Если просто работает еще одно нажатие, значит, ваш интернет не подключен.
источник