J'utilise la commande suivante pour pousser vers ma branche distante:
git push origin sandbox
Si je dis
git push origin
cela entraîne-t-il également des changements dans mes autres branches, ou cela ne fait-il que mettre à jour ma branche actuelle? J'ai trois branches: master
, production
et sandbox
.
La git push
documentation n'est pas très claire à ce sujet, je voudrais donc clarifier cela définitivement.
Quelles branches et télécommandes les git push
commandes suivantes mettent-elles à jour exactement?
git push
git push origin
origin
ci-dessus est une télécommande.
Je comprends que cela git push [remote] [branch]
ne poussera que cette branche vers la télécommande.
git
branch
git-branch
git-push
PlagueHammer
la source
la source
git push
, ce qui pourrait être intéressantRéponses:
Vous pouvez contrôler le comportement par défaut en définissant push.default dans votre configuration git. Depuis la documentation de git-config (1) :
Définit l'action que git push doit entreprendre si aucune spécification de référence n'est indiquée sur la ligne de commande, aucune spécification de référence n'est configurée dans la télécommande et aucune spécification de référence n'est impliquée par aucune des options fournies sur la ligne de commande. Les valeurs possibles sont:
nothing
: ne poussez rienmatching
: pousser toutes les branches correspondantesToutes les branches ayant le même nom aux deux extrémités sont considérées comme étant identiques.
C'était la valeur par défaut, mais pas depuis Git 2.0 (
simple
est la nouvelle valeur par défaut).upstream
: pousser la branche courante vers sa branche amont (tracking
est un synonyme obsolète pour amont)current
: pousser la branche courante vers une branche du même nomsimple
: (nouveau dans Git 1.7.11) comme en amont, mais refuse de pousser si le nom de la branche en amont est différent du nom localC'est l'option la plus sûre et convient bien aux débutants.
Ce mode est devenu le mode par défaut dans Git 2.0.
Exemples de ligne de commande:
Pour afficher la configuration actuelle:
Pour définir une nouvelle configuration:
la source
simple
mode. Ce mode est destiné à devenir la valeur par défaut à l'avenir.simple
fonctionne commeupstream
, mais commecurrent
nécessite que les noms des branches soient les mêmes aux deux extrémités.simple
comportement est maintenant celui par défaut.Vous pouvez configurer le comportement par défaut de votre git avec push.default
ou si vous avez de nombreux référentiels et que vous voulez la même chose pour tous alors
Le courant dans cette configuration signifie que par défaut, vous ne pousserez la branche actuelle que lorsque vous git push
Les autres options sont:
MISE À JOUR - NOUVELLE FAÇON DE LE FAIRE
Depuis Git 1.7.11, procédez comme suit:
Il s'agit d'un nouveau paramètre introduit qui fonctionne de la même manière que le courant, et sera défini par défaut sur git à partir de la version 2.0 selon les rumeurs.
la source
git push origin
poussera tous les changements sur les branches locales qui ont des branches distantes correspondantes surorigin
As forgit push
Dans la section Exemples de la
git-push
page de manuella source
Je viens de valider mon code dans une branche et de le pousser vers github, comme ceci:
la source
Voici une information très pratique et utile sur Git Push : Git Push: Just the Tip
L'utilisation la plus courante de git push est de pousser vos modifications locales vers votre dépôt public en amont. En supposant que l'amont est un distant nommé "origin" (le nom distant par défaut si votre référentiel est un clone) et que la branche à mettre à jour vers / depuis est nommée "master" (le nom de la branche par défaut), cela se fait avec:
git push origin master
git push origin
poussera les modifications de toutes les branches locales vers les branches correspondantes de la télécommande d'origine.git push origin master
poussera les modifications de la branche principale locale vers la branche principale distante.git push origin master:staging
poussera les modifications de la branche maître locale vers la branche de transfert distante si elle existe.la source
git push origin branch_name
pour une raison quelconque, pousser non seulement labranch_name
branche, mais aussi d'autres branches locales (git version 1.9.1).git push origin master:staging
est un bijou caché génial!(Mars 2012)
Attention: cette
matching
politique " " par défaut pourrait changer bientôt(parfois après git1.7.10 +) :
Voir " Veuillez discuter: ce que" git push "devrait faire quand vous ne dites pas quoi pousser? "
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
la source
Je viens de mettre cela dans ma section d'alias .gitconfig et j'adore comment cela fonctionne:
Poussera la branche courante vers l'origine avec
git pub
ou un autre dépôt avecgit pub repo-name
. Délicieux.la source
git push -u --repo="origin" $1;
plutôt. Cela fonctionne assez bien, sauf si vous passez à un autre référentiel, le nom de la branche sera le nom utilisé par l'autre référentiel, pas celui à partirVous pouvez pousser la branche actuelle avec la commande
(pris d' ici )
la source
Un push git va essayer de pousser toutes les branches locales vers le serveur distant, c'est probablement ce que vous ne voulez pas. J'ai quelques configurations de commodités pour faire face à cela:
Alias "gpull" et "gpush" de manière appropriée:
Dans mon ~ / .bash_profile
Ainsi, exécuter "gpush" ou "gpull" ne poussera que ma branche "actuellement sur".
la source
Vous pouvez modifier ce comportement par défaut dans votre
.gitconfig
, par exemple:Pour vérifier les paramètres actuels, exécutez:
la source
Plutôt que d'utiliser des alias, je préfère créer des scripts git-XXX afin de pouvoir les contrôler plus facilement (nos développeurs ont tous un certain répertoire contrôlé par la source sur leur chemin pour ce type de chose).
Ce script (appelé
git-setpush
) définira la valeur de configuration pourremote.origin.push
value sur quelque chose qui ne fera que pousser la branche actuelle:notez que, comme nous utilisons
Gerrit
, il définit la ciblerefs/for/XXX
à pousser dans une branche d'examen. Il suppose également que l'origine est votre nom distant.Appelez-le après avoir vérifié une branche avec
Il pourrait évidemment être adapté pour faire également le paiement, mais j'aime que les scripts fassent une chose et le fassent bien
la source
feature/fix_fubar
sont toutes pointées vers des branches en amont plus génériques commemaster
oudevelop
, donc cela pointerait vers le mauvais en amont. À quoi ressemble votre flux local pour les référentiels contrôlés par gerrit?git config remote.origin.push HEAD:refs/for/master
.J'ai ajouté les fonctions suivantes dans mon fichier .bashrc pour automatiser ces tâches. Il fait git push / git pull + nom de la branche courante.
la source