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.
4 réponses
oui, il suffit de faire la suite de
git checkout feature_x
git push origin feature_x
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é, utilisezupstream
à 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 commeupstream
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 commecurrent
. 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.
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
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.