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 chamado feature/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:
- criar ou recriar a ramificação no controle remoto ou
- exclua sua filial local ou
- qualquer outra coisa que você possa pensar.
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 na url
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 usar git ls-remote
para ver como isso funciona (tente, é educacional). Aqui está um trecho do que recebo ao executar isso em um repositório 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]
As refs/heads/
entradas listam todas as ramificações existentes no controle remoto, 1 junto com os IDs de confirmação correspondentes (para refs/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 mesma remote
seção. Nesse caso, seu Git substitui refs/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: é executado git fetch
no controle remoto apropriado e, em seguida git merge
(ou, se assim for instruído git 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 e origin
, em seguida, mesclar com qualquer ID encontrado sob o nome refs/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 seguida git merge
(ou git rebase
), o seu Git examinaria suas remotes/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ê executou git 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 ela origin/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 chamado origin
.
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.