553 votes

Quelle est la différence entre origin et upstream sur GitHub ?

Quelle est la différence entre origin y upstream en GitHub ?

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

4 votes

1061voto

VonC Points 414372

Ceci doit être compris dans le contexte de Fourches GitHub (où l'on fork un repo GitHub sur GitHub avant de cloner ce fork localement).

  • upstream fait généralement référence au répertoire original que vous avez bifurqué.
    (voir aussi " Définition de " downstream " et " upstream " "pour en savoir plus sur upstream terme)
  • origin est votre fork : votre propre repo sur GitHub, clone du repo original de GitHub

Depuis la page GitHub :

Lorsqu'un repo est cloné, il possède un remote par défaut appelé origin qui pointe vers votre fork sur GitHub, et non vers le repo original à partir duquel il a été forqué.
Pour garder la trace du repo original, vous devez ajouter un autre remote nommé upstream

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

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

Vous utiliserez upstream a Récupérer à partir du dépôt d'origine (afin de garder votre copie locale en synchronisation avec le projet auquel vous voulez contribuer).

git fetch upstream

( git fetch à lui seul, il irait chercher dans origin par défaut, ce qui n'est pas ce qui est nécessaire ici)

Vous utiliserez origin a tirer et pousser puisque vous pouvez contribuer à votre propre dépôt.

git pull
git push

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

Vous contribuerez ainsi à la upstream en créant un demande de retrait .

fork and upstream

15 votes

Il est également utile de savoir ce que upstream est généralement : stackoverflow.com/questions/2739376/

0 votes

Il est intéressant de mentionner que dans le contexte de github, il est plus logique que l'origine soit le master-repo et que le nom d'utilisateur github soit utilisé comme nom distant pour votre fork et les autres forks. Des outils comme defunkt.io/hub font cela et rendent le travail avec les dépôts et la collaboration à travers les forks beaucoup plus uniforme.

2 votes

@MaxRydahlAndersen vrai, mais j'aime utiliser Git sans wrapper, donc je vais garder cette convention (upstream vs. origin) pour le moment.

61voto

TUSqasi Points 182

Réponse en quelques mots.

  • origine : le fourchette
  • en amont : le fourche

4voto

Jude Ukana Points 85

Après avoir cloné une bifurcation, vous devez explicitement ajouter un amont distant, avec git add remote "le repo original à partir duquel vous avez bifurqué". Cela devient votre amont, vous récupérez et fusionnez principalement à partir de votre amont. Toute autre activité, comme le transfert de votre dépôt local vers le dépôt amont, doit être effectuée à l'aide d'une demande de transfert.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X