Exactement ce que fait le “u”? “git push -u de l'origine de maître” vs “git push origin master”
Je suis apparemment terrible à l'aide de git, malgré mes tentatives de le comprendre.
De kernel.org pour git push
:
-u
--set-en amont
Pour chaque branche qui est à jour ou réussi, ajouter en amont (suivi) référence, utilisé par l'argument de moins git pull(1) et d'autres commandes. Pour plus d'informations, voir
branch.<name>.merge
dans git-config(1).
Voici branch.<name>.merge
de git config
:
branch.<name>.merge
Définit, en collaboration avec
branch.<name>.remote
, l'amont de la branche de la branche donnée. Il indique à git fetch/git pull de la branche de fusionner et peut également affecter la commande git push (voir pousser.valeur par défaut). Lorsque la direction générale<name>
, il indique à git fetch par défaut refspec être marqués pour la fusion dans FETCH_HEAD. La valeur est traitée comme la partie à distance d'un refspec, et doit correspondre à une ref qui est récupérée à partir de la distance donnée par"branch.<name>.remote"
. La fusion d'informations est utilisé par la commande git pull (qui en appelle d'abord git fetch) à la recherche de la branche par défaut pour la fusion. Sans cette option, la commande git pull par défaut de fusion de la première refspec par les cheveux. Spécifier plusieurs valeurs pour obtenir une pieuvre de fusion. Si vous voulez configurer git pull pour qu'elle se confonde dans<name>
d'une autre branche dans le dépôt local, vous pouvez pointerbranch.<name>.merge
à la branche désirée, et d'utiliser le réglage spécial . (une période) pourbranch.<name>.remote
.
J'ai réussi à mettre en place un référentiel distant avec github, et j'ai réussi mon premier engager avec:
git push -u origin master
Ensuite, j'ai involontairement réussi ma deuxième s'engagent à mon dépôt distant à l'aide de:
git commit -m '[...]'
Cependant tort de penser que j'aurais à pousser à nouveau à origin
de master
, j'ai couru:
# note: no -u
git push origin master
Ce qui n'a que faire? Il ne semble pas avoir le moindre effet. Je n'ai "annuler" git push -u origin master
?
I'm apparently terrible at using git, despite my best attempts to understand it.
- Je n'ai jamais eu quelqu'un de recréer de m'avoir si bien.OriginalL'auteur ClosureCowboy | 2011-04-18
Vous devez vous connecter pour publier un commentaire.
La clé, c'est "l'argument-moins git pull". Lorsque vous faites un
git pull
à partir d'une branche, sans en préciser la source de la télécommande ou de la branche, git regarde lebranch.<name>.merge
réglage de savoir où tirer.git push -u
jeux de cette information pour la direction générale, vous êtes le poussant.Pour voir la différence, nous allons utiliser un nouveau vide branche:
Tout d'abord, nous pousser sans
-u
:Maintenant, si nous ajoutons
-u
:Noter que les informations de suivi a été mis en place afin que
git pull
fonctionne comme prévu, sans préciser la distance ou de la branche.Mise à jour: conseils de Bonus:
git pull
ce paramètre affecte également le comportement par défaut degit push
. Si vous prenez l'habitude d'utiliser-u
pour capturer la distance que vous avez l'intention de suivre, je vous recommande de créer votrepush.default
config de la valeur àupstream
.git push -u <remote> HEAD
va pousser la branche courante à une branche du même nom sur<remote>
(et également mis en place de suivi de sorte que vous pouvez fairegit push
après que).git push <remote> <branch>
rend les choses sans ambiguïté. Si vous laissez off de la télécommande ou de la branche git retombe sur la branche paramètres de configuration, qui sont placés pour vous avecgit push -u
.J'ai pris de l'avance et on vous a marqué comme réponse, mais ce commentaire un peu me confond. Dans votre réponse, vous avez démontré que git a confus après
git push origin test
(qui n'ont pas-u
). Vous ensuite montré quegit push -u origin test
supprime l'ambiguïté. Est-il une faute de frappe, ou suis-je juste être dense de nouveau?Je pense que nous parlons les uns les autres. 🙂 Quand je dis
git push <remote> <branch>
est sans ambiguïté, je veux dire que, par rapport àgit push
qui s'appuie sur la direction de la config. De même,git pull <remote> <branch>
est sans ambiguïté etgit pull
s'appuie sur la direction de la config. Une fois que vous avez poussé avec-u
, à la foisgit push
etgit pull
fonctionnera comme prévu.Votre réponse est très bien, mais dans vos commentaires ci-dessus, vous répétez un fausse idée commune à propos de
git push
- sauf si vous définissezpush.default
vous-même,git push
utilise uniquement l'amont en direction de la configuration de décider qui à distance pour le pousser à, pas de succursale à distance pour mettre à jour.La meilleure pratique pour git est
git push origin master
et le même de l'autre côté c'est à dire.git pull origin master
.. Donc Si supposons que la branche de changement, alors vous pouvezgit push origin branch_name
et le même de l'autre côté c'est à dire.git pull origin branch_name
OriginalL'auteur dahlbyk
Est la même chose que:
Faire la dernière déclaration, si vous oubliez le
-u
!Ou vous pourriez force:
Si vous laissez la commande si, pour vous, il va choisir vos erreurs si vous avez tapé inexistante de branche ou vous n'avez pas
git remote add
, bien que peut-être ce que vous voulez :).master
est juste un exemple 🙂Ok, le deuxième bit est maintenant déprécié dans les versions plus récentes pour:
git branch master -u origin/master
détails @ stackoverflow.com/a/2286030/790359Si vous oubliez d'utiliser le
-u
option, tapezgit push -u
immédiatement sera OK.Les nouvelles versions de git indiquent que
--setup-upstream
sera obsolète:The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to
--set-amont est obsolète, maintenant il fonctionne:
git branch --set-upstream-to=origin/master master
OriginalL'auteur sabgenton
Plus en termes simples:
Techniquement, le
-u
drapeau ajoute une référence de suivi pour le serveur en amont vous pousser à.Ce qui est important ici, c'est que cela vous permet de vous faire une
git pull
sans fournir plus d'arguments. Par exemple, une fois que vous faites ungit push -u origin master
, vous pouvez appeler plus tardgit pull
et git savez que vous vouliez vraiment diregit pull origin master
.Sinon, vous auriez à taper dans l'ensemble de la commande.
-u
drapeau àorgin master
chaque prochain pull reportez-vous à elle. Et si je veux changer legit pull
comportement je devrais courirgit push -u origin some_other_branch
etgit pull
va maintenant se référer àsome_other_branch
? Merci!!!!Exactement. Vous êtes sur que @Felipe_Augusto
c'est la meilleure réponse
nous pouvons également utiliser des "git push" au lieu d'utiliser "git push origin master"?
Oui, vous pouvez @cegprakash. Cependant, vous devez d'abord faire un
git push -u origin master
OriginalL'auteur Adepoju Oluwasegun
Tout le nécessaire git bash commandes à pousser et à tirer sur Github:
Si vous souhaitez modifier un fichier puis:
Pour voir toutes les directions et de leur s'engage:
OriginalL'auteur Kamta Mishra