Question Git checkout: la mise à jour des chemins est incompatible avec le changement de branche


Mon problème est lié à Erreur fatale Git lors du changement de 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 le changement de branche.
  Avez-vous eu l'intention de passer en revue 'origin / remote-name' qui ne peut être résolu en commit?

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

Pourquoi cela ne fonctionne-t-il pas sur le référentiel avec lequel je travaille?


452
2018-06-03 16:16


origine


Réponses:


Je crois que cela se produit lorsque vous essayez de vérifier une branche distante que votre repo git local n'est pas encore au courant. Essayer:

git remote show origin

Si la branche distante que vous souhaitez archiver se trouve sous "Nouvelles branches distantes" et non "Branches distantes suivies", vous devez d'abord les récupérer:

git remote update
git fetch

Maintenant, ça devrait marcher:

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

727
2017-09-03 02:52



Autre syntaxe,

git fetch origin remote_branch_name:local_branch_name

147
2017-10-23 17:52



Après avoir essayé la plupart de ce que j'ai pu lire dans ce fil sans succès, je suis tombé sur celui-ci: La branche distante n'apparaît pas dans "git branch -r"

Il s'est avéré que mon fichier .git / config était incorrect. Après avoir fait une simple correction, toutes les branches se sont présentées.

Venir 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
2017-07-05 09:33



Je ne sais pas si cela est utile ou très pertinent pour votre question, mais si vous essayez d'aller chercher unique branchez à 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
2018-02-23 20:42



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

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 le vérifier.

Confirmé travaillant sur 1.7.5.4


11
2017-07-11 20:33



Pour moi, ce qui a fonctionné était:

git fetch

Ce 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 cela a parfaitement fonctionné. Semblable à la réponse la plus votée, mais un peu plus simple.


7
2018-04-26 20:38



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

Est-il possible à un moment donné d'avoir tapé:

Origine de la branche git / Nom-distant

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

git checkout origine / nom-distant

Vous allez soit voir:

Passé à la branche "origine / nom-distant"

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

Note: passer à "origin / rework-isscoring" qui n'est pas une branche locale
Si vous voulez créer une nouvelle branche à partir de cette caisse, vous pouvez le faire
(maintenant ou plus tard) en utilisant à nouveau -b avec la commande checkout. Exemple:
  git checkout -b

ce qui signifie que c'est vraiment une branche distante.


3
2017-10-23 18:22



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        

Puis lancez la commande git branch --track ...

  git branch --track $BRANCH origin/$BRANCH

3
2017-09-19 00:34