Git checkout: a atualização de caminhos é incompatível com a troca de filiais

Meu problema está relacionado ao erro Fatal Git ao trocar de ramificação .

Eu tento buscar um ramo remoto com o comando

git checkout -b local-name origin/remote-name 

mas recebo esta mensagem de erro:

fatal: git checkout: a atualização de caminhos é incompatível com a troca de agências.
Você pretendia fazer o checkout ‘origin / remote-name’, que não pode ser resolvido como commit?

Se eu criar manualmente uma ramificação e, em seguida, puxar a ramificação remota, ela funcionará, assim como fazer um novo clone e verificar a ramificação.

Por que não funciona no repository com o qual trabalho?

Acredito que isso ocorre quando você está tentando fazer o checkout de uma ramificação remota da qual seu repository local do git ainda não sabe. Experimentar:

 git remote show origin 

Se a ramificação remota que você deseja registrar está em “Novas ramificações remotas” e não em “Ramificações remotas controladas”, é necessário buscá-las primeiro:

 git remote update git fetch 

Agora deve funcionar:

 git checkout -b local-name origin/remote-name 

Sintaxe alternativa,

 git fetch origin remote_branch_name:local_branch_name 

Depois de ter tentado a maior parte do que eu consegui ler neste tópico sem sucesso, me deparei com este: ramificação remota não aparecendo em “git branch -r”

Descobri que meu arquivo .git / config estava incorreto. Depois de fazer uma correção simples, todos os ramos apareceram.

Indo de

 [remote "origin"] url = http://stash.server.com/scm/EX/project.git fetch = +refs/heads/master:refs/remotes/origin/master 

para

 [remote "origin"] url = http://stash.server.com/scm/EX/project.git fetch = +refs/heads/*:refs/remotes/origin/* 

Fez o truque

Não tenho certeza se isso é útil ou exatamente relevante para a sua pergunta, mas se você estiver tentando buscar e finalizar apenas uma única ramificação do repository remoto, os seguintes comandos git farão o seguinte:

 url= << URL TO REPOSITORY >> branch= << BRANCH NAME >> git init git remote add origin $url git fetch origin $branch:origin/$branch git checkout -b $branch --track origin/$branch 

Nenhum dos acima funcionou para mim. Minha situação é um pouco diferente, meu ramo remoto não é de origem . mas em um repository diferente.

 git remote add remoterepo GIT_URL.git git fetch remoterepo git checkout -b branchname remoterepo/branchname 

dica: se você não vir a ramificação remota na seguinte git branch -v -a saída git branch -v -a não há como verificar isso.

Confirmado trabalhando em 1.7.5.4

Para mim o que funcionou foi:

 git fetch 

Que puxa todos os refs para baixo para sua máquina para todos os ramos no controle remoto. Então eu poderia fazer

 git checkout  

e isso funcionou perfeitamente. Semelhante à resposta mais votada, mas um pouco mais simples.

Eu suspeito que não há uma ramificação remota chamada remote-name, mas que você criou inadvertidamente uma ramificação local chamada origin / remote-name.

É possível que você em algum momento typescript:

 git branch origin / remote-name

Criando assim uma ramificação local denominada origin / remote-name? Digite este comando:

 git checkout origin / remote-name

Você também verá:

 Comutado para a ramificação "origin / remote-name"

o que significa que é realmente uma ramificação local com nome errado ou

 Nota: mudar para "origem / retrabalho", que não é um ramo local
 Se você quiser criar um novo ramo a partir deste checkout, você pode fazê-lo
 (agora ou mais tarde) usando -b com o comando checkout novamente.  Exemplo:
   git checkout -b 

o que significa que é realmente um ramo remoto.

Não é muito intuitivo, mas isso funciona bem para mim …

  mkdir remote.git & cd remote.git & git init git remote add origin $REPO git fetch origin $BRANCH:refs/remotes/origin/$BRANCH 

Então, execute o comando git branch –track …

  git branch --track $BRANCH origin/$BRANCH 

O seu problema pode estar vinculado a essa outra pergunta SO “problema de checkout” ?

ou seja: um problema relacionado a:

  • uma versão antiga do Git
  • uma syntax de checkout curiosa, que deve ser: git checkout -b [] [] , com [] referindo-se ao nome de uma confirmação na qual iniciar a nova ramificação, e 'origin/remote-name' não é isso.
    (enquanto o git branch suporta um start_point sendo o nome de um branch remoto)

Nota: o que o script checkout.sh diz é:

  if test '' != "$newbranch$force$merge" then die "git checkout: updating paths is incompatible with switching branches/forcing$hint" fi 

É como se a syntax git checkout -b [] [remote_branch_name] estivesse renomeando o branch e redefinindo o novo ponto inicial do novo branch, que é considerado incompatível.

Depois de buscar um zilhão de vezes, os controles remotos ainda não apareciam, embora as bolhas estivessem na piscina. Acontece que a opção –tags não deve ser dada ao git remote add por qualquer motivo. Você pode removê-lo manualmente do .git / config para fazer o git fetch criar os refs.

Para mim eu tinha um erro de digitação e meu ramo remoto não existia

Use git branch -a para listar filiais remotas