Git checkout: la mise à jour des chemins est incompatible avec la commutation des branches

Mon problème est lié à la Fatal Git d'erreur lors de la commutation de la branche .

j'essaie de récupérer une branche distante avec la commande

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

mais je reçois ce message d'erreur:

fatal: git checkout: la mise à jour des chemins est incompatible avec la commutation des branches.

Aviez-vous l'intention de vérifier 'origine/remote-name' qui ne peut pas être résolu en tant que commit?

si je crée manuellement une branche et puis tire la branche distante, cela fonctionne, tout comme faire un nouveau clone et vérifier la branche.

pourquoi ne fonctionne-t-il pas sur le dépôt avec lequel je travaille?

452
demandé sur Community 2009-06-03 20:16:52
la source

11 ответов

je crois que cela se produit lorsque vous essayez de récupérer une branche distante que votre repo git local n'est pas encore conscients. Essayez:

git remote show origin

si la branche distante que vous voulez vérifier est sous "nouvelles branches distantes" et non "branches distantes suivies" alors vous devez les récupérer en premier:

git remote update
git fetch

Maintenant, il doit travailler:

git checkout -b local-name origin/remote-name
729
répondu user167628 2013-02-15 01:02:52
la source

syntaxe alternative,

git fetch origin remote_branch_name:local_branch_name
148
répondu Rare Pleasures 2011-01-29 12:26:56
la source

après avoir essayé la plupart de ce que je pouvais lire dans ce fil sans succès, je suis tombé sur celui-ci: branche Distante ne s'affiche pas dans "git branch-r"

Il s'est avéré que mon .le fichier git / config était incorrect. Après une simple correction, toutes les branches sont apparues.

à partir de

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

à

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

Fait le tour

42
répondu PålOliver 2017-05-23 15:10:43
la source

pas sûr que cela soit utile ou exactement pertinent à votre question, mais si vous essayez de récupérer et de vérifier seulement une branche simple à partir du dépôt distant, alors les commandes git suivantes feront l'affaire:

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
12
répondu VirtualStaticVoid 2011-02-23 23:42:26
la source

rien de ce qui précède n'a fonctionné pour moi. Ma situation est légèrement différente, ma branche éloignée n'est pas à origine . mais dans un autre référentiel.

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

astuce: si vous ne voyez pas la branche distante dans la sortie suivante git branch -v -a , il n'y a aucun moyen de la vérifier.

travail confirmé sur 1.7.5.4

11
répondu Olivier Refalo 2011-07-12 00:33:32
la source

pour moi ce qui a fonctionné était:

git fetch

qui tire toutes les références vers votre machine pour toutes les branches sur la télécommande. Alors je pourrais faire

git checkout <branchname>

et ça a parfaitement fonctionné. Semblable à haut voté réponse, mais un peu plus simple.

7
répondu Matt 2012-04-27 00:38:28
la source

je soupçonne qu'il n'y a pas de branche distante nommée remote-name, mais que vous avez créé par inadvertance une branche locale nommée origin/remote-name.

est-il possible que vous à un certain point tapé:

git branch origin/remote-name

créant ainsi une branche locale nommée origin/remote-name? Tapez cette commande:

git checkout origin/remote-name

vous verrez:

Switched to branch "origin/remote-name"

ce qui signifie que c'est une branche locale mal nommée, ou

Note: moving to "origin/rework-isscoring" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b 

ce qui signifie que c'est vraiment une branche éloignée.

4
répondu Don Branson 2011-01-22 17:43:47
la source

Ce n'est pas très intuitif, mais cela fonctionne bien pour moi ...

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

lancez la commande git branch -- track ...

  git branch --track $BRANCH origin/$BRANCH
3
répondu Eddie B 2011-09-19 04:34:59
la source

votre problème pourrait-il être lié à cette autre question SO " problème de caisse " ?

c'est à dire: un problème lié à:

  • une ancienne version de Git
  • une curieuse syntaxe de caisse, qui devrait être: git checkout -b [<new_branch>] [<start_point>] , avec [<start_point>] se référant au nom d'une propagation à laquelle démarrer la nouvelle branche, et 'origin/remote-name' n'est pas cela.

    (considérant que git branch supporte un point de départ étant le nom d'une branche distante)

Note: que le checkout.sh script dit:

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

c'est comme si la syntaxe git checkout-b [] [remote_branch_name] était à la fois renommer la branche et réinitialiser le nouveau point de départ de la nouvelle branche, ce qui est jugé incompatible.

1
répondu VonC 2017-05-23 15:18:23
la source

après avoir récupéré un zillion de fois, les télécommandes ne se sont pas présentées, bien que les blobs aient été dans la piscine. Il s'avère que l'option --tags ne devrait pas être donnée à git remote add pour quelque raison que ce soit. Vous pouvez supprimer manuellement de la .git/config pour faire git fetch créer les refs.

1
répondu eMPee584 2012-05-29 20:23:32
la source

pour moi j'avais une faute de frappe et ma branche éloignée n'existait pas

Utiliser git branch -a liste des branches distantes

1
répondu Thomas 2017-12-08 18:53:03
la source

Autres questions sur git git-checkout remote-branch