Comment pousser une seule branche Git (et pas d'autres branches)?

je travaille sur un dépôt git local. Il y a deux branches, master et feature_x .

je veux pousser feature_x vers le repo à distance, mais je ne veux pas pousser les changements sur la branche master .

est-ce qu'un git push origin feature_x de ma branche feature_x (la branche feature_x existe déjà à distance) fonctionnera?

Je ne veux pas tester cela sur ma boîte, parce que je ne peux pas pousser à maîtriser en ce moment.

210
demandé sur Rafael Mueller 2009-05-04 17:49:33

4 réponses

oui, il suffit de faire la suite de

git checkout feature_x
git push origin feature_x
335
répondu cpjolicoeur 2009-05-04 13:57:28

par défaut git push met à jour toutes les branches distantes. Mais vous pouvez configurer git pour mettre à jour uniquement la branche courante vers l'amont.

git config push.default upstream

cela signifie que git ne mettra à jour que la branche courante (cochée) lorsque vous effectuez une poussée de git.

les autres options valables sont:

  • nothing : Ne poussez rien (erreur) à moins que un refspec soit explicitement indiqué . Ce est principalement destiné aux personnes qui veulent éviter les erreurs en étant toujours explicite.
  • matching : pousser toutes les branches ayant le même nom aux deux extrémités. (option par défaut avant la Ver 1.7.11)
  • upstream : pousser la branche courante vers son amont direction. Ce mode n'a de sens que si vous poussez vers le même dépôt d'où vous tiriez normalement (c'est-à-dire flux de travail central ). il N'est pas nécessaire d'avoir le même nom pour les succursales locales et éloignées.
  • tracking : déprécié, utilisez upstream à la place.
  • current : pousser la branche courante vers la branche distante de la même nom sur le côté de réception. Fonctionne dans les flux de travail centraux et non centraux.
  • simple : [disponible depuis Ver 1.7.11] dans le flux de travail centralisé, travailler comme upstream avec une sécurité supplémentaire pour refuser de pousser si le nom de la branche en amont est différent de celui de la branche locale. Lorsque vous poussez vers une télécommande qui est différente de la télécommande que vous tirez 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 de Git 2.0.
62
répondu Karthik Bose 2015-04-16 06:52:18

mise à jour mineure en plus de réponse de Karthik Bose - vous pouvez configurer git globalement, pour affecter tous vos espaces de travail à se comporter de cette façon:

git config --global push.default upstream
5
répondu Bhaskar 2017-05-23 11:54:56

donc disons que vous avez une branche locale foo, une télécommande appelée origin et une télécommande origin/master.

pour pousser le contenu de foo à l'origine / master, vous devez d'abord régler son amont:

git checkout foo
git branch -u origin/master

alors vous pouvez pousser à cette branche en utilisant:

git push origin HEAD:master

dans la dernière commande vous pouvez ajouter --force pour remplacer toute l'histoire d'origine/maître par celle de foo.

-2
répondu CodeKid 2015-01-07 00:14:53