105 votes

git: change de branche sans détacher la tête

J'ai un repository sur github avec une branche principale (master) et une branche pour certains travaux expérimentaux. J'ai fait quelques révisions et poussé à la branche expérimentale et que tout allait bien.

Maintenant, sur une machine différente, j'essaie de cloner mon dépôt git clone référentiel), et puis de passer à la branche expérimentale (git checkout branchname), mais chaque fois que je fais ce que ma tête est détachée et je ne peux pas pousser mes modifications. Ce que je fais mal? J'ai l'impression que je vais manquer un fondamental git concept quelque part, mais la lecture aléatoire git pages de man n'est pas de me donner des indices.

Je suis nouveau sur git, donc je suis désolé si je suis un idiot, mais je ne trouve rien dans la doc qui va m'aider à rattacher ma tête.

MODIFIER

Le concept de suivi de la branche est ce qui me manquait. Maintenant que je grok ce concept, tout est clair. Personnellement, je trouve l' git branch --track de la syntaxe à être beaucoup plus intuitive git checkout -b branch-name origin/branch-name.

Merci pour l'aide!

118voto

Kent Fredric Points 35592
# first time: make origin/branchname locally available as localname
git checkout -b localname origin/branchname 

# othertimes 
git checkout localname 

git push origin

Pour plus de commodité, vous pouvez utiliser la même chaîne pour localname & branchname
Lorsque vous avez vérifié origin/branchname vous n'avez pas vraiment vérifier une branche. origin/branchname est une "distance" du nom, et vous pouvez obtenir une liste d'entre eux avec

branch -a 

Si vous avez des couleurs est activée, les branches locales seront d'une couleur, et à distance de l'autre.

Vous devez d'abord faire une branche distante suivis localement afin d'être en mesure de passer et de travailler sur elle.

17voto

Christoph Rüegg Points 1620
 git clone git@github.com:abc/def.git
cd def
 

Maintenant, créez une branche de suivi:

 git branch --track experimental origin/experimental
git checkout experimental
 

Ensuite, après avoir travaillé là-bas, il suffit de pousser à github par

 git push
 

11voto

Pat Notz Points 46841

Pour développer la réponse de Kent, une fois que vous avez créé votre clone, la seule branche que vous avez (les télécommandes ne comptent pas) est celle qui était active dans le référentiel à partir duquel vous avez cloné - maître dans votre cas.

Donc, vous voudrez d’abord créer une nouvelle branche pour suivre la branche expérimentale distante:

 $ git branch experimental origin/experimental
 

et ensuite vérifier:

 $ git checkout experimental
 

Cependant, Kent est correct - ces deux commandes peuvent être combinées

 $ git checkout -b experimental origin/experimental
 

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