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:
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. 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