Comment pousser une seule twig Git (et aucune autre twig)?

Je travaille sur un repository git local. Il y a deux twigs, master et feature_x .

Je veux pousser feature_x vers le repo distant, mais je ne veux pas pousser les modifications sur la twig master .

Est-ce qu’une git push origin feature_x de ma twig feature_x (la twig feature_x existe déjà sur la télécommande) fonctionne?

Je ne veux pas tester cela sur ma boîte, car je ne peux pas pousser pour maîsortingser maintenant.

oui, il suffit de faire ce qui suit

 git checkout feature_x git push origin feature_x 

Par défaut, git push met à jour toutes les twigs distantes. Mais vous pouvez configurer git pour ne mettre à jour que la twig actuelle en amont.

 git config push.default upstream 

Cela signifie que git ne mettra à jour que la twig en cours (extraite) lorsque vous lancez git.

Les autres options valables sont les suivantes:

  • nothing : Ne poussez rien (erreur out) à moins qu’un refspec ne soit explicitement donné . Ceci est principalement destiné aux personnes qui veulent éviter les erreurs en étant toujours explicites.
  • matching : poussez toutes les twigs ayant le même nom aux deux extrémités. (option par défaut avant la version 1.7.11)
  • upstream : Poussez la twig en cours vers sa twig en amont. Ce mode n’a de sens que si vous utilisez le même référentiel que celui que vous utiliseriez normalement (par exemple, le workflow central ). Pas besoin d’avoir le même nom pour la twig locale et distante.
  • tracking : Déconseillé, utilisez plutôt en upstream .
  • current : Poussez la twig courante vers la twig distante du même nom à la réception. Fonctionne dans les workflows centraux et non centraux.
  • simple : [disponible depuis la version 1.7.11] dans un workflow centralisé, fonctionne comme en upstream avec une sécurité supplémentaire pour refuser de pousser si le nom de la twig en amont est différent du nom local. Lorsque vous utilisez une télécommande différente de celle que vous utilisez normalement, travaillez comme current . C’est l’option la plus sûre et convient aux débutants. Ce mode est devenu le mode par défaut dans Git 2.0.

Mise à jour mineure en plus de la réponse de Karthik Bose – vous pouvez configurer globalement Git pour affecter tous vos espaces de travail de la manière suivante:

 git config --global push.default upstream 

Donc, disons que vous avez une twig locale foo, une origine appelée à distance et une origine / maître de twig distante.

Pour pousser le contenu de foo vers origin / master, vous devez d’abord définir son contenu en amont:

 git checkout foo git branch -u origin/master 

Ensuite, vous pouvez pousser vers cette twig en utilisant:

 git push origin HEAD:master 

Dans la dernière commande, vous pouvez append –force pour remplacer l’historique complet d’origine / master par celui de foo.