Qual é a diferença entre origem e upstream no GitHub?

409

Qual é a diferença entre origine upstreamno GitHub ?

Quando um git branch -acomando é executado, alguns ramos têm um prefixo de origin( remotes/origin/..) enquanto outros têm um prefixo de upstream( remotes/upstream/..).

jan
fonte
3
Relacionado: Definição de "downstream" e "upstream" no git.
RBT

Respostas:

804

Isso deve ser entendido no contexto dos garfos do GitHub (onde você bifurca um repositório do GitHub no GitHub antes de cloná-lo localmente).

  • upstreamgeralmente se refere ao repositório original que você bifurcou
    (consulte também " Definição de" downstream"e" upstream" " para obter mais informações sobre o upstreamprazo)
  • origin é o seu fork: seu próprio repositório no GitHub, clone do repositório original do GitHub

Na página do GitHub:

Quando um repo é clonado, ele tem um controle remoto padrão chamado originque aponta para o seu fork no GitHub, não o repo original do qual foi bifurcado.
Para acompanhar o repo original, você precisa adicionar outro controle remoto chamadoupstream

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

(com aUser/aRepoa referência do criador e do repositório original que você bifurcou)

Você utilizará upstreama busca no repositório original (para manter sua cópia local sincronizada com o projeto no qual deseja contribuir).

git fetch upstream

(por git fetchsi só, buscaria originpor padrão, o que não é necessário aqui)

Você usará originpara puxar e empurrar, pois pode contribuir com seu próprio repositório.

git pull
git push

(novamente, sem parâmetros, 'origem' é usado por padrão)

Você contribuirá de volta para o upstreamrepositório fazendo uma solicitação de recebimento .

garfo e montante

VonC
fonte
11
Também ajuda a saber o que upstreamgeralmente é: stackoverflow.com/questions/2739376/…
VonC
2
@MaxRydahlAndersen true, mas eu gosto de usar o Git sem wrapper, por isso vou manter essa convenção (upstream vs. origin) por enquanto.
VonC
22
De longe, a melhor explicação de como os garfos funcionam que eu já vi. Você recebe o meu voto.
CodeChimp
9
Ótimo trabalho no visual. Resposta muito direta e compreensível. Era exatamente isso que eu estava procurando.
tayopi
1
@iamrudra se o git remote -v mostra o mesmo URL para origem e upstream, então sim, você está enviando para o mesmo repositório remoto.
VonC 11/08/16