git: branche de commutation sans tête détachée
j'ai un repository sur github avec une branche principale (master) et une branche pour certains travaux expérimentaux. J'ai fait quelques commits et poussé vers la branche expérimentale et tout allait bien.
maintenant, sur une autre machine, j'essaie de cloner mon dépôt (clone git dépôt ) et puis passer à la branche expérimentale (checkout git nom de branche ) mais à chaque fois que je le fais, ma tête se détache et je ne peux pas pousser mon changement. Ce que je fais mal? J'ai l'impression de rater un concept fondamental de git quelque part, mais lire des pages de Git man au hasard ne me donne aucun indice.
je suis nouveau à git donc je suis désolé si je suis un idiot mais je ne trouve rien dans les docs qui m'aideront à rattacher ma tête.
MODIFIER
le concept d'une branche de pistage est ce que je manquais. Maintenant que je grok ce concept tout est clair. Personnellement, je trouve la syntaxe git branch --track
beaucoup plus intuitive que git checkout -b branch-name origin/branch-name
.
Merci pour l'aide!
3 réponses
# 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 de caractères pour le nom de domaine et le nom de branche
Quand vous avez vérifié origin/branchname
, vous n'avez pas vraiment vérifié une succursale.
origin/branchname
est un nom" distant", et vous pouvez obtenir une liste d'entre eux avec
branch -a
si vous avez activé les couleurs, les branches locales seront une couleur, et distantes une autre.
Vous devez d'abord faire une branche distante suivis localement afin de être en mesure de passer et de travailler sur elle.
git clone git@github.com:abc/def.git
cd def
maintenant créer une branche de suivi:
git branch --track experimental origin/experimental
git checkout experimental
puis, après avoir travaillé là, il suffit de pousser à github par
git push
pour développer la réponse de Kent, après avoir fait votre clone, la seule branche que vous aurez (remotes don't count) est celle qui était active dans le dépôt que vous avez cloné à partir de -- master dans votre cas.
donc, vous voulez d'abord créer une nouvelle branche pour suivre la branche expérimentale à distance:
$ git branch experimental origin/experimental
et ensuite vérifier:
$ git checkout experimental
cependant, Kent a raison -- ces deux commandes peuvent être combinées
$ git checkout -b experimental origin/experimental