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

Ваша конфигурация указывает на объединение с именем <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
4b9b3361

Ответ 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

Если другое нажатие просто работает, это означает, что ваш интернет не был подключен.