Quelle est la différence entre l'origine et l'amont sur GitHub?

409

Quelle est la différence entre originetupstream sur GitHub ?

Lorsqu'une git branch -acommande est exécutée, certaines branches ont un préfixe de origin( remotes/origin/..) tandis que d'autres ont un préfixe de upstream( remotes/upstream/..).

Jan
la source
3
Connexes: Définition de "aval" et "amont" dans git.
RBT

Réponses:

805

Cela doit être compris dans le contexte des fourches GitHub (où vous forkez un dépôt GitHub sur GitHub avant de cloner cette fourche localement).

  • upstreamse réfère généralement au dépôt d'origine que vous avez bifurqué
    (voir aussi " Définition de" downstream"et" upstream" " pour plus d'informations sur le upstreamterme)
  • origin est votre fork: votre propre repo sur GitHub, clone du repo original de GitHub

Depuis la page GitHub:

Lorsqu'un dépôt est cloné, il a une télécommande par défaut appelée originqui pointe vers votre fork sur GitHub, pas le dépôt d'origine à partir duquel il a été forké.
Pour garder une trace du dépôt d'origine, vous devez ajouter une autre télécommande nomméeupstream

git remote add upstream git://github.com/<aUser>/<aRepo.git>

(avec aUser/aRepo la référence du créateur et du référentiel d'origine, que vous avez bifurqué)

Vous utiliserez upstreampour récupérer à partir du référentiel d'origine (afin de garder votre copie locale en synchronisation avec le projet auquel vous souhaitez contribuer).

git fetch upstream

( git fetchseul serait récupéré originpar défaut, ce qui n'est pas nécessaire ici)

Vous utiliserez originpour tirer et pousser car vous pouvez contribuer à votre propre référentiel.

git pull
git push

(encore une fois, sans paramètres, 'origine' est utilisé par défaut)

Vous contribuerez à nouveau au upstreamdépôt en faisant une demande de tirage .

fourche et en amont

VonC
la source
11
Il permet également de savoir ce qui upstreamest généralement: stackoverflow.com/questions/2739376/…
VonC
2
@MaxRydahlAndersen true, mais j'aime utiliser Git sans wrapper, donc je vais garder cette convention (en amont vs origine) pour l'instant.
VonC
22
De loin la meilleure explication du fonctionnement des fourches que j'ai vue. Vous obtenez mon vote positif.
CodeChimp
9
Excellent travail sur le visuel. Réponse très simple et compréhensible. C'était exactement ce que je cherchais.
tayopi
1
@iamrudra si git remote -v affiche la même URL pour l'origine et en amont, alors oui, vous poussez vers le même référentiel distant.
VonC