J'ai un dépôt 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'essaye de cloner mon référentiel (git clone repository ) puis je passe à la branche expérimentale (git checkout branchname ) mais chaque fois que je fais cela, ma tête se détache et je ne peux pas pousser mes modifications. Qu'est-ce que je fais mal? J'ai l'impression que je manque un concept fondamental de git quelque part, mais lire des pages de manuel git aléatoires 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 documents qui m'aidera à refixer ma tête.
MODIFIER
Le concept d'une branche de suivi est ce qui me manquait. Maintenant que je comprends ce concept, tout est clair. Personnellement, je trouve le git branch --track
la syntaxe est beaucoup plus intuitive que git checkout -b branch-name Origin/branch-name
.
Merci pour l'aide!
# 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'étiez pas vraiment en train de vérifier une succursale. Origin/branchname
est un nom "distant", et vous pouvez en obtenir une liste avec
branch -a
Si les couleurs sont activées, les branches locales seront d'une couleur et distantes d'une autre.
Vous devez d'abord créer une branche distante suivie localement afin de pouvoir basculer et travailler dessus.
git clone [email protected]:abc/def.git
cd def
Créez maintenant une branche de suivi:
git branch --track experimental Origin/experimental
git checkout experimental
Ensuite, après avoir travaillé là-bas, il suffit de pousser vers github par
git Push
Pour développer la réponse de Kent, après avoir fait votre clone, la seule branche que vous aurez (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
puis vérifiez-le:
$ git checkout experimental
Cependant, Kent a raison - ces deux commandes peuvent être combinées
$ git checkout -b experimental Origin/experimental
Avec Git 2.23 (août 2019), vous utiliseriez le git switch
commande
Si vous avez une branche distante du même nom, elle sera automatiquement suivie:
$ git switch new-topic
Branch 'new-topic' set up to track remote branch 'new-topic' from 'Origin'
Switched to a new branch 'new-topic'