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 référentiel distant, mais je ne veux pas pousser les modifications sur la master
branche.
Est-ce qu'un git push origin feature_x
de ma feature_x
branche (la feature_x
branche existe déjà à distance) fonctionnera?
Je ne veux pas tester cela sur ma box, car je ne peux pas pousser pour maîtriser en ce moment.
Réponses:
oui, faites simplement ce qui suit
la source
git push -u origin <branch-name>
. Mais vous ne l'avez pas mentionné. Est-ce nécessaire ?-u
option sur unegit-push
commande définira la référence en amont pour suivre la branche qui vient d'être poussée. Cela fera que les choses commegit-pull
sur cette branche à l'avenir savent déjà de quelle branche se tirer sans la spécifier. Il n'est pas nécessaire comme option pour pousser une seule branche, mais il est largement utilisé car beaucoup de gens veulent que la branche locale suive la branche distante qu'ils poussent.Par défaut,
git push
met à jour toutes les branches distantes. Mais vous pouvez configurer git pour mettre à jour uniquement la branche actuelle vers son amont.Cela signifie que git ne mettra à jour que la branche actuelle (extraite) lorsque vous git push.
Les autres options valides sont:
nothing
: Ne pas pousser quoi que ce soit (erreur) sauf si une refspec est explicitement donnée . Ceci est principalement destiné aux personnes qui souhaitent éviter les erreurs en étant toujours explicites.matching
: Poussez toutes les branches portant le même nom aux deux extrémités. (option par défaut avant Ver 1.7.11)upstream
: Poussez la branche actuelle vers sa branche amont. Ce mode n'a de sens que si vous passez au même référentiel à partir duquel vous tirez normalement (c'est-à-dire le flux de travail central ). Pas besoin d'avoir le même nom pour la branche locale et distante.tracking
: Obsolète, utilisezupstream
plutôt.current
: Poussez la branche actuelle vers la branche distante du même nom à l'extrémité de réception. Fonctionne dans les workflows centraux et non centraux.simple
: [disponible depuis la version 1.7.11] dans un workflow centralisé, fonctionne commeupstream
avec une sécurité supplémentaire pour refuser de pousser si le nom de la branche amont est différent du nom local. Lorsque vous poussez vers une télécommande différente de la télécommande à partir de laquelle 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 dans Git 2.0.la source
current
c'est ce que je cherchais, par défautgit push
dans lafoo
branche le poussera vers laorigin/foo
branche.current
cela a plus de sens par défaut.simple
cela a plus de sens par défaut. J'ai mis à jour la réponse avec «quand utiliser quoi». Pls jeter un oeil.simple
.Mise à jour mineure en plus de la réponse de Karthik Bose - vous pouvez configurer git globalement, pour que tous vos espaces de travail se comportent de cette façon:
la source
Supposons donc que vous ayez une branche locale foo, une télécommande appelée origine et une branche distante origine / maître.
Pour pousser le contenu de foo vers origin / master, vous devez d'abord définir son amont:
Ensuite, vous pouvez pousser vers cette branche en utilisant:
Dans la dernière commande, vous pouvez ajouter --force pour remplacer tout l'historique d'origine / maître par celui de foo.
la source