Que fait «--set upstream»?

327

Que fait git --set-upstream?

J'ai essayé de le comprendre en lisant le manuel de git , mais je ne l'ai pas bien compris.

Евгений Масленков
la source
13
Il y a une nouvelle option --set-upstream-toqui a été introduite en raison des confusions (IIRC) sur l'installation en amont.
Philip Oakley

Réponses:

411
git branch --set-upstream <remote-branch>

définit la branche distante par défaut pour la branche locale actuelle.

Toute future git pullcommande (avec l'extraction de la branche locale en cours),
tentera d'introduire des validations de <remote-branch>dans la branche locale en cours.


Pour éviter d'avoir à taper explicitement, vous pouvez --set-upstreamutiliser son indicateur raccourci -ucomme suit:

git push -u origin local-branch

Cela définit automatiquement l'association en amont pour toute future tentative de push / pull.
Pour plus de détails, consultez cette explication détaillée sur les branches en amont et le suivi .


Pour éviter toute confusion, les versions récentes de gitdéprécient cette --set-upstreamoption quelque peu ambiguë au profit d'une --set-upstream-tooption plus verbeuse avec une syntaxe et un comportement identiques

git branch --set-upstream-to <origin/remote-branch>
TheCodeArtist
la source
7
L'indicateur --set-upstream est obsolète et sera supprimé. Envisagez d'utiliser --track ou --set-upstream-to
Rohit Singh Sengar
1
dans cette commande git push -u origin local-branchque originreprésente le? Y a-t-il un cas où je taperais autre chose originqu'après le -u?
John Henckel
2
@JohnHenckel originfait référence au référentiel git distant qui a été utilisé pour cloner. Il peut y avoir plusieurs référentiels git distants . Dans un tel cas, originpeut être remplacé par le nom propre de la télécommande souhaitée à laquelle on souhaite se référer.
TheCodeArtist
faites un git remote -vpour trouver vos télécommandes, celle par défaut est origingénéralement
xploreraj
39

Lorsque vous poussez vers une télécommande et que vous utilisez l' --set-upstreamindicateur git, la branche vers laquelle vous poussez est la branche de suivi à distance de la branche que vous poussez .

Ajout d' un moyen de dérivation de suivi à distance qui git sait alors ce que vous voulez faire quand vous git fetch, git pullou git pushà l' avenir. Il suppose que vous souhaitez synchroniser la branche locale et la branche distante qu'elle suit et fait ce qui est approprié pour y parvenir.

Vous pourriez réaliser la même chose avec git branch --set-upstream-toou git checkout --track. Consultez les pages d'aide de git sur le suivi des branches pour plus d'informations.

Volonté
la source
Lorsque je commande avec -t, cela définit l'amont pour pousser, uniquement pour tirer.
Jim
8

git branch --set-upstream <<origin/branch>> n'est officiellement plus supporté et est remplacé par git branch --set-upstream-to <<origin/branch>>

Turbut Alin
la source