Git extraer de otro repositorio

95

Tengo un repositorio llamado Generic, que es una aplicación genérica. Lo he bifurcado en un repositorio llamado Acme, que simplemente se basa en el Genericrepositorio almacenado de la aplicación y le agrega la marca Acme Co.

Si realizo cambios en la funcionalidad principal en Generic, quiero actualizar el Acmerepositorio con los últimos cambios que he realizado en la funcionalidad principal en Generic. ¿Como podría hacerlo?

Por lo que puedo decir, esencialmente estoy tratando de fusionar los cambios realizados en un repositorio ascendente en la bifurcación actual.

Si significa algo, estoy tratando de hacer esto porque tengo una aplicación genérica sobre la que luego construyo una marca para clientes individuales (como Acmeen este ejemplo). Si hay una forma más limpia de hacer esto, avíseme.

Libbux
fuente

Respuestas:

135

Emita el siguiente comando en su Acmerepositorio. Agrega un nuevo repositorio remoto llamado upstreamque apunta al Genericrepositorio.

git remote add upstream https://location/of/generic.git

Luego puede fusionar cualquier cambio realizado Genericen la rama actual Acmecon el siguiente comando:

git pull upstream

Si solo desea que descargue los cambios sin fusionarlos automáticamente, use en git fetchlugar de git pull.

Si desea deshabilitar la inserción en ese repositorio, configure la URL de inserción en una URL no válida usando algo como

git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP"

Git ahora le gritará que no podrá encontrar un repositorio si intenta presionar upstream(y lo siento por el Rickroll, pero fue la primera cadena aleatoria que apareció en mi cabeza).

McLovin
fuente
6
Excelente, gracias. Solo una cosa más: ¿hay alguna manera de hacer que este control remoto sea de solo lectura, para no terminar presionándolo accidentalmente?
Libbux
1
Comencé a responder, pero veo que McLovin ya editó su respuesta para incluir eso.
Frankie Simon
4
Desde git 2.9, deberá especificar la marca --allow-unrelated-histories. Ver stackoverflow.com/a/37938036/3799847
sfinks_29
5
Necesitaba emitirgit pull --allow-unrelated-histories upstream master
Alec Jacobson
Intenté eso, pero git pull upstreamsimplemente cuelga ... ¿alguna idea?
Paulo Carvalho
6

Para extraer una rama particular de un repositorio diferente, puede usar el siguiente comando git.

git pull <git_url> <branch> --allow-unrelated-histories
vin
fuente