¿Cuál es la diferencia entre origen y upstream en GitHub?

Respuestas:

805

Esto debe entenderse en el contexto de las bifurcaciones de GitHub (donde se bifurca un repositorio de GitHub en GitHub antes de clonar esa bifurcación localmente).

  • upstreamgeneralmente se refiere al repositorio original que ha bifurcado
    (consulte también " Definición de" downstream"y upstream" "para obtener más información sobre el upstreamtérmino)
  • origin es tu tenedor: tu propio repositorio en GitHub, clon del repositorio original de GitHub

Desde la página de GitHub:

Cuando se clona un repositorio, tiene un control remoto predeterminado llamado originque apunta a su bifurcación en GitHub, no el repositorio original del que se bifurcó.
Para realizar un seguimiento del repositorio original, debe agregar otro control remoto llamadoupstream

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

(con aUser/aRepola referencia para el creador y el repositorio original que ha bifurcado)

Que va a utilizar upstreampara obtenerlo desde el repositorio original, (con el fin de mantener su copia local en sincronía con el proyecto que quiere contribuir a).

git fetch upstream

( git fetchsolo buscaría de originforma predeterminada, que no es lo que se necesita aquí)

Utilizará originpara tirar y empujar, ya que puede contribuir a su propio repositorio.

git pull
git push

(de nuevo, sin parámetros, 'origen' se usa por defecto)

Contribuirá de nuevo al upstreamrepositorio haciendo una solicitud de extracción .

tenedor y aguas arriba

VonC
fuente
11
También ayuda saber qué upstreames generalmente: stackoverflow.com/questions/2739376/…
VonC
2
@MaxRydahlAndersen es cierto, pero me gusta usar Git sin envoltorio, por lo que mantendré esa convención (ascendente versus origen) por ahora.
VonC
22
Con mucho, la mejor explicación de cómo funcionan los tenedores que he visto. Tienes mi voto a favor.
CodeChimp
99
Gran trabajo en lo visual. Respuesta muy directa y comprensible. Esto era exactamente lo que estaba buscando.
tayopi
1
@iamrudra si git remote -v muestra la misma url para origen y aguas arriba, entonces sí, está presionando al mismo repositorio remoto.
VonC