Was ist der Unterschied zwischen Origin und Upstream auf GitHub?

408

Was ist der Unterschied zwischen originund upstreamauf GitHub ? ?

Wenn ein git branch -aBefehl ausgeführt wird, haben einige Zweige das Präfix origin( remotes/origin/..), während andere das Präfix upstream( remotes/upstream/..) haben.

jan
quelle

Antworten:

803

Dies sollte im Zusammenhang mit GitHub-Gabeln verstanden werden (bei denen Sie ein GitHub-Repo auf GitHub gabeln, bevor Sie diese Gabel lokal klonen).

  • upstreambezieht sich im Allgemeinen auf das ursprüngliche Repo, das Sie gegabelt haben
    (siehe auch " Definition von" downstream"und upstream" "für weitere upstreamInformationen)
  • origin ist deine Gabel: dein eigenes Repo auf GitHub, Klon des ursprünglichen Repos von GitHub

Von der GitHub-Seite:

Wenn ein Repo geklont wird, hat es eine Standardfernbedienung namens origin, die auf Ihre Gabel auf GitHub zeigt, nicht auf das ursprüngliche Repo, von dem es gegabelt wurde.
Um den Überblick über das ursprüngliche Repo zu behalten, müssen Sie eine weitere Fernbedienung mit dem Namen hinzufügenupstream

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

(mit aUser/aRepo der Referenz für den ursprünglichen Ersteller und das ursprüngliche Repository, die Sie gegabelt haben)

Sie werden verwenden upstream, um vom Original-Repo abzurufen (um Ihre lokale Kopie mit dem Projekt synchron zu halten, zu dem Sie beitragen möchten).

git fetch upstream

( git fetchallein würde originstandardmäßig abrufen, was hier nicht benötigt wird)

Sie werden originzum Ziehen und Schieben verwenden, da Sie zu Ihrem eigenen Repository beitragen können.

git pull
git push

(Auch hier wird ohne Parameter standardmäßig 'origin' verwendet.)

Sie werden einen Beitrag zum upstreamRepo leisten, indem Sie eine Pull-Anfrage stellen .

Gabel und stromaufwärts

VonC
quelle
11
Es hilft auch zu wissen, was upstreamallgemein ist: stackoverflow.com/questions/2739376/…
VonC
2
@MaxRydahlAndersen stimmt, aber ich verwende Git gerne ohne Wrapper, daher werde ich diese Konvention (Upstream vs. Origin) vorerst beibehalten.
VonC
22
Bei weitem die beste Erklärung dafür, wie Gabeln funktionieren, die ich gesehen habe. Du bekommst meine Gegenstimme.
CodeChimp
9
Tolle Arbeit am Visuellen. Sehr direkte und verständliche Antwort. Genau das habe ich gesucht.
Tayopi
1
@iamrudra Wenn git remote -v dieselbe URL für Ursprung und Upstream anzeigt, dann pushen Sie auf dasselbe Remote-Repo.
VonC