465 votes

Le checkout de Git sur une branche distante ne fonctionne pas

Mon problème est lié à Erreur fatale de 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.
Aviez-vous l'intention de vérifier 'origin/remote-name' qui ne peut être résolu comme commit ?

Si je crée manuellement une branche, puis que je tire la branche distante, cela fonctionne, tout comme la création d'un nouveau clone et l'extraction de la branche.

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

737voto

user167628 Points 5808

Je pense que cela se produit lorsque vous essayez de vérifier une branche distante que votre repo git local ne connaît pas encore. Essayez :

git remote show origin

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

git remote update
git fetch

Maintenant, ça devrait fonctionner :

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

149voto

Rare Pleasures Points 976

Syntaxe alternative,

git fetch origin remote_branch_name:local_branch_name

45voto

PålOliver Points 750

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 effectué une correction simple, toutes les branches sont apparues.

Passer 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/*

Ça a marché

12voto

VirtualStaticVoid Points 511

Je ne suis pas sûr que ce soit utile ou que cela réponde exactement à votre question, mais si vous essayez de récupérer et d'extraire uniquement une 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

11voto

Olivier Refalo Points 12606

Aucune des propositions ci-dessus n'a fonctionné pour moi. Ma situation est légèrement différente, ma branche distante ne se trouve pas à origine . mais dans un dépôt 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é comme fonctionnant sur 1.7.5.4

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X