Maison  >  Article  >  outils de développement  >  Que signifie push -u dans git

Que signifie push -u dans git

WBOY
WBOYoriginal
2022-07-01 10:36:5017824parcourir

Dans git, "push -u" signifie télécharger la version de la branche locale vers la fusion distante et enregistrer la valeur par défaut de push vers la branche distante lors de l'ajout du paramètre "-u", cela signifie continuer à pousser la prochaine fois ; Lorsque vous travaillez sur une branche distante, la commande push peut être abrégée en "git push".

Que signifie push -u dans git

L'environnement d'exploitation de cet article : système Windows 10, Git version 2.30.0, ordinateur Dell G3.

Que signifie push -u dans git ?

La commande git push est utilisée pour télécharger la version de la branche locale sur la télécommande et la fusionner.

Généralement, la commande git push est utilisée pour pousser un entrepôt local vers un entrepôt distant. En tant que novice, j'ai vu quelques tutoriels sur Internet. Certains d'entre eux apporteront un paramètre -u lors de git push, d'autres non. Il n’y a aucune différence dans les résultats réels de la poussée. Je suis juste curieux de savoir à quoi sert le paramètre -u ?

Après avoir cherché un moment, j'ai résumé et enregistré certaines explications et analyses de chacun.

Analyse des paramètres :

Tout d'abord, il y a cette description pour git push :

-u

–set-upstream

Pour chaque branche qui est à jour ou poussée avec succès, ajoutez en amont (suivi ) référence, utilisée par git-pull(1) sans argument et d'autres commandes. Pour plus d'informations, voir branch.8a11bc632ea32a57b3e3693c7987c420.merge dans git-config(1).

Dans cette description, vous pouvez voir -. u Les paramètres sont liés à la variable suivante

branch.8a11bc632ea32a57b3e3693c7987c420.merge

branch.8a11bc632ea32a57b3e3693c7987c420.merge et branch.8a11bc632ea32a57b3e3693c7987c420.remote définissent ensemble la branche amont de la branche donnée. Il indique à git fetch/git pull quelle branche fusionner et peut également affecter git push

Et en amont fait référence au référentiel principal à partir duquel d'autres extrairont, comme votre référentiel GitHub. L'option -u est automatiquement définie en amont pour vous, reliant votre référentiel à un référentiel central. De cette façon, à l'avenir, Git « saura » où vous voulez pousser et d'où vous voulez tirer, vous pourrez donc utiliser git pull ou git push sans paramètres.

Lorsque vous git pull depuis une branche sans spécifier la source distante ou la branche, git examine le paramètre branch.8a11bc632ea32a57b3e3693c7987c420.merge pour savoir d'où extraire. Et c'est la commande git push -u qui définit ces informations pour la branche que vous souhaitez pousser.

À ce stade, pour faire simple, apporter le paramètre -u équivaut en fait à enregistrer la valeur par défaut de push vers la branche distante, de sorte que la prochaine fois que nous voudrons continuer à pousser la branche distante, la commande push pourra être abrégé Just git push.

Exemple d'affichage :

Un exemple est présenté ci-dessous pour illustrer ce point.

andy@AndyMacBookPro:/usr/local/github/andy/php-examples$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> test

C'est le résultat si vous n'avez pas utilisé le paramètre -u avant et avez ensuite omis le paramètre de branche que vous souhaitez extraire. Tirez car il n'y a pas de piste pour la branche actuelle. Il ne sait donc pas d'où vous voulez extraire, c'est donc la signification du paramètre -u, spécifiant la branche trach.

En fait, après avoir spécifié -u, vous pouvez aller dans .git/config pour consulter le fichier de configuration GIT. Vous pouvez voir l'enregistrement de la branche "test" ci-dessous :

[branch "master"] 
 remote = origin
merge = refs/heads/master 
[branch "test"]
remote = origin
merge = refs/heads/test

De cette façon, git peut connaître le. fichiers distants et distants sous le test en cours. Fusionnez les informations, si vous n'incluez pas le paramètre -u lors de git push, alors il n'y aura pas d'élément "test" de branche dans la configuration.

 [branch "master"]
    remote = origin
    merge = refs/heads/master

Instructions de configuration, cela indique 2 choses à Git :

Lorsque vous êtes sur la branche master, la télécommande par défaut est origin.

Lorsqu'il est utilisé sur une branche git pullmaster (aucune télécommande ni branche spécifiée), utilisez la télécommande par défaut (source) et fusionnez les modifications de la branche principale distante.

Modification de la configuration

Vous pouvez accéder manuellement à .git/config pour modifier le contenu du fichier de configuration GIT, ou vous pouvez utiliser la ligne de commande pour définir ces options.

 $ git config branch.master.remote origin
 $ git config branch.master.merge refs/heads/master

S'il est configuré à l'aide de commandes, il aura certaines capacités de correction d'erreurs. Par exemple, vous avez tapé une branche qui n'existe pas ou vous n'avez pas effectué l'opération d'ajout à distance git. Dans un git plus récent, j'espère que vous utiliserez git branch --set-upstream-to=origin/master master

En fait, exécuter la commande git push -u origin master avec le paramètre -u ajouté équivaut à exécuter git push origin master et

git branch --set-upstream master origin/master.

Donc, si vous envoyez du code vers une branche distante et que vous souhaitez continuer à envoyer du code vers la branche distante, vous pouvez ajouter le paramètre -u à ​​la commande push pour simplifier la saisie ultérieure de la commande push.

Apprentissage recommandé : "

Tutoriel Git

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn