Question Comportement par défaut de "git push" sans une branche spécifiée


J'utilise la commande suivante pour pousser vers ma branche distante:

git push origin sandbox

Si je dis

git push origin

Est-ce que cela entraîne aussi des changements dans mes autres branches, ou est-ce que cela ne fait que mettre à jour ma branche actuelle? J'ai trois branches: master, production et sandbox.

le git push la documentation n'est pas très claire à ce sujet, alors j'aimerais clarifier cela pour de bon.

Quelles branches et télécommandes font ce qui suit git push commandes mettre à jour exactement?

git push 
git push origin

origin ci-dessus est une télécommande.

je comprends que git push [remote] [branch] poussera seulement cette branche à la télécommande.


1213
2018-06-04 02:45


origine


Réponses:


Vous pouvez contrôler le comportement par défaut en définissant push.default dans votre configuration git. De la documentation de git-config (1):

push.default

Définit l'action que git push doit effectuer si aucun refspec n'est donné sur la ligne de commande, aucune refspec n'est configurée dans la télécommande, et aucune refspec n'est impliquée par l'une des options données sur la ligne de commande. Les valeurs possibles sont:

  • nothing: ne poussez rien

  • matching: pousser toutes les branches correspondantes

    Toutes les branches ayant le même nom aux deux extrémités sont considérées comme correspondant.

    C'est la valeur par défaut dans Git 1.x.

  • upstream: pousser la branche courante vers sa branche amont (tracking est un synonyme obsolète pour l'amont)

  • current: pousser la branche courante vers une branche du même nom

  • simple: (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 local

    C'est l'option la plus sûre et convient bien aux débutants.

    Cela deviendra la valeur par défaut dans Git 2.0.

Les modes simple, courant et amont sont pour ceux qui veulent sortir une seule branche après la fin du travail, même si les autres branches ne sont pas encore prêtes à sortir

Exemples de ligne de commande:

Pour voir la configuration actuelle:

git config --global push.default

Pour définir une nouvelle configuration:

git config --global push.default current

1422
2018-06-04 03:16



git push origin va pousser tous les changements sur les branches locales qui ont des branches distantes correspondants à origin Pour ce qui est de git push 

Fonctionne comme git push <remote>, où <remote> est la télécommande distante de la branche courante (ou origine, si aucune télécommande n'est configurée pour la branche courante).

Dans la section Exemples de la git-push page de manuel


197
2017-10-06 10:45



Vous pouvez configurer le comportement par défaut de votre git avec push.default

git config push.default current

ou si vous avez beaucoup de dépôts et que vous voulez la même chose pour tous

git config --global push.default current

le actuel dans cette configuration signifie que par défaut, vous serez seulement pousser la branche actuelle quand tu fais git push

D'autres options sont:

  • rien: Ne poussez rien
  • correspondance: Poussez toutes les branches correspondantes (par défaut)
  • tracking: Poussez la branche actuelle vers ce qu'elle est en train de suivre
  • courant: pousser la branche actuelle

MISE À JOUR - NOUVELLE FAÇON DE FAIRE

À partir de Git 1.7.11, procédez comme suit:

git config --global push.default simple

Ceci est un nouveau paramètre introduit qui fonctionne de la même manière que le courant, et sera fait par défaut à git de v 2.0 selon les rumeurs


194
2017-11-06 10:05



J'ai juste commis mon code à une branche et l'ai poussé à github, comme ceci:

git branch SimonLowMemoryExperiments
git checkout SimonLowMemoryExperiments
git add .
git commit -a -m "Lots of experimentation with identifying the memory problems"
git push origin SimonLowMemoryExperiments

55
2017-08-09 08:02



Voici une information très pratique et utile sur Git Push: Git Push: juste le conseil

L'utilisation la plus courante de git push est de pousser vos modifications locales vers votre référentiel amont public. En supposant que le flux amont est un nom d'origine "distant" (le nom distant par défaut si votre référentiel est un clone) et que la branche à mettre à jour est appelée "maître" (le nom de la branche par défaut), git push origin master

git push origin poussera les changements de toutes les branches locales à des branches correspondantes à la télécommande d'origine.

git push origin master va pousser les changements de la branche maître locale vers la branche maître distante.

git push origin master:staging Transférera les modifications de la branche maître locale à la branche de transfert distante si elle existe.


22
2018-03-17 11:13



(Mars 2012)
Attention: ce défaut "matching"La politique pourrait changer bientôt
(parfois après git1.7.10 +)
:

Voir "S'il vous plaît discuter: ce que "git push" devrait faire quand vous ne dites pas quoi pousser?"

Dans le paramètre actuel (c'est à dire. push.default=matching), git push sans argument poussera toutes les branches qui existent localement et à distance avec le même nom.
  Cela est généralement approprié lorsqu'un développeur pousse vers son propre référentiel public, mais peut être déroutant, voire dangereux, lors de l'utilisation d'un référentiel partagé.

La proposition est de changer la valeur par défaut à 'upstream', c'est-à-dire ne pousser que la branche courante, et la pousser vers la branche que tirerait git.
  Un autre candidat est 'current'; cela ne pousse que la branche actuelle vers la branche distante du même nom.

Ce qui a été discuté jusqu'à présent peut être vu dans ce fil:

http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694

Les discussions pertinentes antérieures comprennent:

Pour participer à la discussion, envoyez vos messages à: git@vger.kernel.org


19
2018-03-15 00:50



Je viens de mettre cela dans ma section aliases .gitconfig et j'aime comment cela fonctionne:

pub = "!f() { git push -u ${1:-origin} `git symbolic-ref HEAD`; }; f"

Va pousser la branche actuelle à l'origine avec git pub ou un autre repo avec git pub repo-name. Délicieux.


17
2018-06-04 02:49



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 installations de configuration pour faire face à ceci:

Alias ​​"gpull" et "gpush" de manière appropriée:

Dans mon ~ / .bash_profile

get_git_branch() {
  echo `git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
}
alias gpull='git pull origin `get_git_branch`'
alias gpush='git push origin `get_git_branch`'

Ainsi, l'exécution de "gpush" ou "gpull" poussera juste ma branche "actuellement sur".


8
2018-06-23 07:50