Ваша конфигурация указывает на объединение с именем <branch name> с удаленного устройства, но такой рефлектор не был выбран.?
Я получаю эту ошибку для pull:
В вашей конфигурации указано объединение с ref 'refs/heads/feature/Sprint4/ABC-123-Branch' от пульта, но нет такой ref был получен.
Эта ошибка не подходит для любой другой ветки.
Особенность этой ветки в том, что она создается из предыдущего фиксации другой ветки.
Мой файл конфигурации выглядит так:
[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
Ответы
Ответ 1
Что это значит
Ваш восходящий поток - удаленный, который вы называете 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
:
$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1 refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6 refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638 refs/heads/todo
[snip]
В 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 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/
remote-tracking, чтобы увидеть, что объединить или перебазировать. Если когда-то была такая ветвь, у вас может быть ветка удаленного отслеживания. В этом случае вы не получите сообщение об ошибке. Если такой ветки никогда не было, или если вы запустили git fetch
с --prune
(который удаляет мертвые ветки удаленного отслеживания), так что у вас нет соответствующей ветки удаленного отслеживания, вы получите жалобу, но она будет --prune
вместо origin/feature/Sprint4/ABC-123-Branch
.
В любом случае мы можем заключить, что feature/Sprint4/ABC-123-Branch
теперь не существует на удаленном именованном origin
.
Возможно, он существовал когда-то, и вы, вероятно, создали свою локальную ветку из ветки удаленного отслеживания. Если это так, у вас, вероятно, все еще есть ветка удаленного отслеживания. Вы можете выяснить, кто удалил ветку с пульта и почему, или просто нажать что-нибудь, чтобы заново создать ее, или удалить ветку удаленного отслеживания и/или вашу локальную ветку.
+1 Ну, все, что он собирается признать, по крайней мере. Но если они специально не спрятали некоторые ссылки, список включает в себя все.
Ответ 2
Проверьте, доступна ли ваша удаленная ветвь.
У меня была такая же проблема, и, наконец, я понял, что удаленная ветка была удалена кем-то.
Ответ 3
Это также может произойти, если вы/кто-то переименовали ветку. Поэтому выполните следующие действия (если вы знаете, что имя ветки переименовано) Предполагая, что более раннее имя ветки было указано как wrong-branch-name
а кто-то переименовало его в correct-branch-name
.
git checkout correct-branch-name
git pull
(вы увидите это "Ваша конфигурация указывает..")
git branch --unset-upstream
git push --set-upstream origin correct-branch-name
git pull
(вы не получите более раннее сообщение)
Ответ 4
Для меня это была проблема чувствительности к регистру. Моя локальная ветка была Version_feature2 вместо Version_Feature2. Я повторно проверил свою ветку, используя правильный корпус, а затем git pull работал.
Ответ 5
Эта ошибка также может быть получена, если имя ветки происхождения имеет некоторые проблемы.
Например: ветвь происхождения team1-Team
, а локальная ветка - в качестве team1-Team
. Тогда это T
в -Team
и T
в -Team
может вызвать такую ошибку. Это произошло в моем случае. Итак, изменив локальное имя с именем ветки происхождения, ошибка была решена.
Ответ 6
Я получил аналогичную ошибку, когда фактическая причина заключалась в том, что мой диск был заполнен. После удаления некоторых файлов git pull
начал работать так, как я ожидал.
Ответ 7
В моем случае мне просто не хватало начального коммита в удаленной ветки, поэтому локальная ветвь не нашла ничего, что можно было бы извлечь, и выдало это сообщение об ошибке.
Я сделал:
git commit -m 'first commit' // on remote branch
git pull // on local branch
Ответ 8
Просто проверьте, удалил ли кто-нибудь ветку на удаленном компьютере.
Ответ 9
Я продолжал сталкиваться с этой проблемой. В моем случае причиной этой ошибки был комментарий @Jerreck о различиях в именах ветвей. Некоторые инструменты Windows не знают о чувствительности к регистру.
Чтобы отключить чувствительность к регистру в git, выполните эту команду:
git config --global core.ignorecase true
Обратите внимание, что это повлияет не только на имена ветвей. Например, если у вас есть "Foo.h" и "foo.h" в одном каталоге (не очень хорошая идея при создании программного обеспечения для Windows), то я подозреваю, что вы не можете отключить чувствительность к регистру.
Ответ 10
Для меня это произошло потому, что я объединил ветвь dev в master с помощью веб-интерфейса, а затем попытался синхронизировать/вытащить, используя VSCode, который был открыт в ветки dev. (странно, что я не мог изменить мастер, не получив эту ошибку.)
git pull
Your configuration specifies to merge with the ref 'refs/heads/dev'
from the remote, but no such ref was fetched.'
Имеет смысл, что не находит его refs/heads/dev - для меня было проще просто удалить локальную папку и снова клонировать.
Ответ 11
Я получил именно эту ошибку, когда выполнял "git pull", когда мой диск был заполнен. Создали пространство и все снова заработало нормально.
Ответ 12
Вы можете редактировать файл ~/.gitconfig
в вашей домашней папке. Здесь сохраняются все настройки --global.
Или используйте git config --global --unset-all remote.origin.url
и после запуска git fetch
с URL-адресом хранилища.
Ответ 13
Я столкнулся с той же проблемой, где моя текущая ветвь была dev, и я проверял ветку MR и делал git pull после этого. Простой обходной путь, который я выбрал, состоял в том, что я создал новую папку для MR Branch и сделал там git pull, а затем git clone.
Так что в основном я поддерживал разные папки для отправки кода в разные ветки.
Ответ 14
В моем случае я удалил исходную ветку, из которой была получена моя текущая ветка. Итак, в файле .git/config у меня было:
[branch "simil2.1.12"]
remote = origin
merge = refs/heads/simil2.0.5
rebase = false
simil2.0.5 был удален. Я заменил его с тем же именем ветки:
[branch "simil2.1.12"]
remote = origin
merge = refs/heads/simil2.1.12
rebase = false
и это сработало
Ответ 15
Если другое нажатие просто работает, это означает, что ваш интернет не был подключен.