Estou recebendo este erro para puxar:
Sua configuração especifica para mesclar com o ref 'refs / heads / feature / Sprint4 / ABC-123-Branch' do controle remoto, mas nenhum ref foi buscado.
Este erro não está vindo para nenhum outro ramo.
O que há de especial nesse ramo é que ele é criado a partir do commit anterior de outro ramo.
Meu arquivo de configuração se parece com:
[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
Respostas:
O que isto significa
O seu upstream - o controle remoto que você chama
origin
- não tem mais, ou talvez nunca tenha (é impossível distinguir apenas dessa informação) um ramo chamadofeature/Sprint4/ABC-123-Branch
. Há um motivo particularmente comum para isso: alguém (provavelmente você não, ou você se lembraria) excluiu o ramo nesse outro repositório Git.O que fazer
Isso depende do que você deseja . Veja a seção de discussão abaixo. Você pode:
Discussão
Você deve estar executando
git pull
(se estivesse executando,git merge
você receberá uma mensagem de erro diferente ou nenhuma mensagem de erro).Quando você executa
git fetch
, seu Git entra em contato com outro Git, com base naurl
linha na[remote "origin"]
seção de sua configuração. O Git executa um comando (upload-pack
) que, entre outras coisas, envia ao Git uma lista de todos os ramos. Você pode usargit ls-remote
para ver como isso funciona (tente, é educacional). Aqui está um trecho do que recebo ao executar isso em um repositório Gitgit
:As
refs/heads/
entradas listam todas as ramificações existentes no controle remoto, 1 junto com os IDs de confirmação correspondentes (pararefs/tags/
entradas que os IDs podem apontar para marcar objetos em vez de confirmar).Seu Git pega cada um desses nomes de ramificação e o altera de acordo com a
fetch
(s) linha (s) na mesmaremote
seção. Nesse caso, seu Git substituirefs/heads/master
porrefs/remotes/origin/master
, por exemplo. Seu Git faz isso com todos os nomes de agências que aparecem.Ele também registra os nomes originais no arquivo especial
FETCH_HEAD
(você pode ver esse arquivo se procurar no seu próprio.git
diretório). Este arquivo salva os nomes e IDs buscados.O
git pull
comando é um atalho de conveniência: é executadogit fetch
no controle remoto apropriado e, em seguidagit merge
(ou, se assim for instruídogit rebase
) , com os argumentos necessários para mesclar (ou refazer) conforme orientado pela[branch ...]
seção. Nesse caso, sua[branch "feature/Sprint4/ABC-123-Branch"]
seção diz para buscar eorigin
, em seguida, mesclar com qualquer ID encontrado sob o nomerefs/heads/feature/Sprint4/ABC-123-Branch
.Como nada foi encontrado sob esse nome,
git pull
reclama e para.Se você executou isso como duas etapas separadas
git fetch
e , em seguidagit merge
(ougit rebase
), o seu Git examinaria suasremotes/origin/
ramificações de rastreamento remoto em cache para ver com o que mesclar ou rebater. Se não foi tão ramo um em um tempo, você ainda pode ter o ramo de rastreamento remoto. Nesse caso, você não receberá uma mensagem de erro. Se nunca houve uma ramificação ou se você executougit fetch
com--prune
(que remove ramificações de rastreamento remoto inativas), para que você não tenha uma ramificação de rastreamento remoto correspondente, você receberia uma reclamação, mas ela se referiria a elaorigin/feature/Sprint4/ABC-123-Branch
.Em qualquer um dos casos , podemos concluir que
feature/Sprint4/ABC-123-Branch
não existe agora no controle remoto chamadoorigin
.Provavelmente existia ao mesmo tempo, e você provavelmente criou sua filial local a partir da filial de rastreamento remoto. Nesse caso, você provavelmente ainda possui a ramificação de rastreamento remoto. Você pode investigar para ver quem removeu a ramificação do controle remoto e por quê, ou pode simplesmente pressionar algo para recriá-la ou excluir sua ramificação de rastreamento remoto e / ou sua ramificação local.
1 Bem, tudo o que isso vai admitir , pelo menos. Mas, a menos que eles ocultem especificamente algumas referências, a lista inclui tudo.
fonte
git remote prune origin
git fetch --prune origin
, ou conjuntofetch.prune
paratrue
a sua configuração (todos os três têm a intenção de fazer a mesma coisa, embora em algumas versões do Git alguns destes não foram bastante confiável).git checkout <your remote branch>
e tudo seria bom (em alguns casos).git branch --set-upstream-to=origin/master master
para mudar a configuração upstream do seu localmaster
. Excluir e recriar tem isso como um efeito colateral (supondo que você use o estilo DWIMgit checkout master
para criá-lo), com um efeito colateral adicional de forçar o seumaster
para corresponder ao seuorigin/master
.Isso também pode acontecer se você / alguém renomeou o ramo. Portanto, siga estas etapas (se você souber que o nome da filial é renomeado) Assumindo o nome da filial anterior como
wrong-branch-name
e alguém o renomeou paracorrect-branch-name
So.git pull
(você verá "Sua configuração especifica ..")git push --set-upstream origin correct-branch-name
git pull
(você não receberá a mensagem anterior)fonte
git push
e não funcionará se o ramo atual estiver atrás do controle remoto.git pull origin correct-branch-name
basta.Verifique se sua filial remota está disponível para receber. Eu tive o mesmo problema, finalmente percebi que o ramo remoto foi excluído por alguém.
fonte
Para mim, foi um problema de distinção entre maiúsculas e minúsculas. Minha filial local era Version_feature2 em vez de Version_Feature2. Voltei a verificar meu ramo usando a caixa correta e, em seguida, o git pull funcionou.
fonte
Este erro também pode ser recebido quando o nome da ramificação de origem tem algum problema de caso.
Por exemplo: a ramificação de origem é
team1-Team
e a ramificação local foi registrada comoteam1-team
. Então, issoT
dentro-Team
et
dentro-team
pode causar esse erro. Isso aconteceu no meu caso. Portanto, alterando o nome local pelo nome da ramificação de origem, o erro foi resolvido.fonte
No meu caso, eu estava simplesmente com falta de confirmação inicial na ramificação remota, portanto, a ramificação local não estava encontrando nada para extrair e estava enviando essa mensagem de erro.
Eu fiz:
fonte
Eu recebi um erro semelhante quando a causa real era que meu disco estava cheio. Depois de excluir alguns arquivos,
git pull
comecei a funcionar como eu esperava.fonte
Eu continuei correndo para esse problema. No meu caso, o comentário de @ Jerreck sobre diferenças de caso nos nomes dos ramos foi a causa desse erro. Algumas ferramentas do Windows não estão cientes da distinção entre maiúsculas e minúsculas.
Para desativar a distinção entre maiúsculas e minúsculas no git, execute este comando:
Observe que isso afetará mais do que os nomes das filiais. Por exemplo, se você tiver "Foo.h" e "foo.h" no mesmo diretório (não é uma boa idéia ao criar software para Windows), suspeito que você não possa desativar a distinção entre maiúsculas e minúsculas.
fonte
Basta verificar se alguém excluiu a filial no controle remoto.
fonte
No meu caso, eu excluí a ramificação original da qual derivou minha ramificação atual. Portanto, no arquivo .git / config eu tinha:
o simil2.0.5 foi excluído. Substituí-lo pelo mesmo nome do ramo:
e funcionou
fonte
Você pode vincular facilmente sua filial local à remota executando:
fonte
Para mim, isso aconteceu porque eu mesclei um branch dev no master usando a interface da web e tentei sincronizar / puxar usando o VSCode que estava aberto no dev branch (é estranho que eu não possa mudar para master sem obter esse erro.)
Faz sentido que não o encontre refs / heads / dev - para mim foi mais fácil excluir a pasta local e clonar novamente.
fonte
Acabei de receber exatamente esse erro ao executar "git pull" quando meu disco estava cheio. Criou algum espaço e tudo começou a funcionar bem novamente.
fonte
Você pode editar o
~/.gitconfig
arquivo na sua pasta pessoal. É aqui que todas as configurações globais são salvas.Ou use
git config --global --unset-all remote.origin.url
e depois executegit fetch
com o URL do repositório.fonte
Eu estava enfrentando o mesmo problema em que meu ramo atual era dev e eu estava consultando o ramo MR e fazendo o git pull a partir de então. Uma solução fácil que tomei foi a criação de uma nova pasta para o MR Branch e o git pull lá seguido pelo git clone.
Então, basicamente, mantive pastas diferentes para enviar o código para uma ramificação diferente.
fonte
Acabei de receber o mesmo erro quando não usei o caso correto. Eu poderia fazer o checkout da 'integração'. Git me disse para executar um
git pull
para atualizar meu ramo. Fiz isso, mas recebi o erro mencionado. O nome correto da ramificação é 'Integração' com uma maiúscula 'I'. Quando eu verifiquei o ramo e o puxei, ele funcionou sem problemas.fonte
Se outra atração funcionar, significa que sua internet não estava conectada.
fonte