2010-11-12 16 views
96

He bifurcado un Padre: project a Hijo: this. Ahora, quiero actualizar a mi hijo con las actualizaciones actuales de los padres. ¿Puedo hacer eso? Si es así, ¿cómo?Actualizo mi repositorio de github que se bifurcó de otro proyecto

Cuando actualizo mi repositorio de github, entonces puedo hacer un "git pull" para actualizar mi repositorio local.

+0

Lo tienes al revés: haces tu trabajo en tu repositorio local, y luego haces git push para actualizar el control remoto. – Cascabel

+10

Sí, entiendo eso, pero hay algunos cambios en el proyecto original que necesito incorporar en mi copia de trabajo. Es por eso que necesito actualizar mi repositorio local con las actualizaciones del proyecto original mientras mantengo intactos los cambios en mi código local. – zengr

+2

Eso es exactamente lo que todos hemos explicado cómo hacer. Simplemente estoy señalando que no "actualiza el repositorio de Github, luego ... tire para actualizar su repositorio local" - actualiza el repositorio local, luego presiona al repositorio de Github. – Cascabel

Respuesta

90

En su clon local del niño, tire de los padres, añadiendo como un control remoto si lo desea:

cd child 
git remote add parent <parent-url> 
git pull parent 

La url de la matriz podría ser el repositorio público de github, o su clon local, el clon local será, por supuesto, más rápido. Si desea extraer una rama que no sea la CABEZA actual del repositorio principal, simplemente agregue un argumento (por ejemplo, git pull parent topic-branch). Si esto es algo que ocurre una sola vez, puede omitir la adición del control remoto: git pull <parent-url> [branch].

Pulling es una combinación de buscar y fusionar, por lo que una vez que haya hecho eso, obtendrá una nueva combinación de compromiso que presumiblemente desea volver a enviar a su repositorio público en algún momento.

El punto clave aquí, en caso de que no esté claro, es que extraer del repositorio principal (ascendente) no es diferente de extraer de su clon público secundario, su repositorio actual. De cualquier forma, está obteniendo de un repositorio con un historial común y fusionándolo en su rama actual. Y, por supuesto, dado que se está fusionando, se necesita un árbol de trabajo, por lo que esto es algo que debe hacerse en su repositorio local. El repositorio alojado en github es esencialmente una forma de publicar lo que has hecho localmente. Todo lo que realmente puede hacer con esto es presionar/jalar, y explorar lo que hay allí.

+2

Recibí un error 'Usted pidió extraer del 'origen' remoto, pero no especificó una rama. Debido a que este no es el control remoto configurado por defecto para su rama actual, debe especificar una rama en la línea de comando' cuando hice 'git pull parent'. Puede repasarlo rápidamente con 'git pull parent master'. Esta es solo una solución si trabaja directamente en su rama principal o simplemente tiene una sucursal o no tiene idea de qué es una sucursal y solo desea fusionarse rápidamente. Clase de la nueva solución de abeja o si solo tiene una solución rápida para introducir un pequeño cambio. –

12

que desee:

git pull git://github.com/voldemort/voldemort.git

+0

entonces, con ese comando, mi repositorio local se actualizará, pero ¿qué pasa con mi proyecto hijo en github? Voy a empujar eso a mi hijo github? – zengr

+0

@zengr: 'git pull' es una combinación de' git fetch' y 'git merge'.En efecto, fusiona una rama del repositorio remoto en su rama actual. Al igual que con cualquier otro trabajo que realice en su repositorio local, para obtenerlo en el control remoto, lo presiona. – Cascabel

+0

Como otros han recomendado, 'git remote add parent', ¿cómo es eso diferente de tu appraoch de solo' git pull'? – zengr

15
  1. clonar tu repositorio a su máquina local, si no lo ha hecho: git clone [email protected]:utkarsh2012/voldemort.git
  2. Añadir el sentido ascendente como un nuevo mando a distancia: git remote add upstream git://github.com/voldemort/voldemort.git
  3. Con su sucursal desprotegido, tire de la corriente arriba en su rama, que creará una combinación entre los dos conjuntos de cambios: git pull upstream o git pull upstream branch-to-merge. Si está trabajando en una sucursal sin usar, también puede usar git fetch y git rebase para volver a establecer su trabajo sin necesidad de una fusión.
3

Esto también se puede hacer simplemente en la interfaz web de GitHub: emitir una Solicitud Tire pero intercambiar los repo repo base de y cabeza. Si la extracción se puede realizar automáticamente, será.

+5

** Advertencia ** si haces esto, agrega una confirmación en tu proyecto bifurcado. Así que terminas una apuesta antes del proyecto principal. –

Cuestiones relacionadas