2011-04-21 21 views
66

Hice un proyecto, hice algunos cambios y obtuve una solicitud de extracción aceptada. Pero ahora, el proyecto que bifurqué se trasladó a otro repositorio y es una bifurcación de ese repositorio.¿Cómo cambio el proyecto de GitHub del que bifurqué?

Eso es:

Original -> MyFork 

Ahora:

NewOriginal -> Original -> MyFork 

¿Cómo lo consigo a la siguiente?

actualización
NewOriginal -> MyFork 
+29

La respuesta aceptada proporciona una solución, pero en realidad no responde a la pregunta principal, cómo cambiar la "forma de horquilla de" metadatos sobre sí mismo GitHub. Estoy interesado en lo mismo. –

Respuesta

49

A nivel local se puede simplemente cambiar el objetivo del repositorio original se localiza en. Por lo general, ese repositorio se llama aguas arriba, por lo que podría hacer esto:

git remote set-url upstream git://example.com/NewOriginal.git 

Dependiendo de lo que esté usando (es decir, donde se encuentra su tenedor), que podría haber algunos enlaces internos adicionales, puede no cambias tan fácilmente Por ejemplo, en Github, el tenedor está directamente relacionado con el original desde el que se bifurcó. En ese caso, debe volver a bifurcar el nuevo proyecto y trabajar con el nuevo tenedor.

En ese caso, sin embargo se puede cambiar fácilmente el URL del repositorio de origen así, y simplemente empujar todo lo que ha cambiado antes en su antigua tenedor en su nuevo tenedor.

+10

generalmente el control remoto para el repositorio en sentido ascendente se llama 'origen' – knittl

+3

@knittl: En realidad, el repositorio en sentido ascendente es el repositorio original en el que se basa el fork. Origin es tu repositorio público del que clonaste, es decir, el tenedor. – poke

+2

what‽ si clonas un repositorio, las ramas de ese repositorio estarán disponibles a través del control remoto 'origin'. la URL del control remoto de 'origen' es la URL desde la cual se clonó. no hay control remoto 'ascendente' por defecto en git – knittl

9

el mando a distancia URL en su repositorio:

git remote set-url origin <url to NewOriginal, e.g. git://…/bla.git> 
+2

Eso no funcionará. El OP todavía necesita establecer el origen en MyFork para que pueda hacer solicitudes de extracción contra NewOriginal una vez que haya enviado sus cambios a MyFork en GitHub. No tiene acceso de escritura a NewOriginal, por lo que al establecer el origen se producirán fallos en sus intentos. – Guy

56

NOTA: La siguiente solución está incompleta ya que perderá todo el contenido de la wiki y problemas específicos de su tenedor.

se puede lograr esto mediante los siguientes pasos:

  1. Tire hacia abajo de todas las ramas y las etiquetas de su tenedor existente.
  2. Borre su repositorio en GitHub.
  3. Tenedor del nuevo repositorio.
  4. Actualice el control remoto URL si es necesario.
  5. Empuje todas sus ramas y etiquetas locales al nuevo repositorio.
+6

Esta es la respuesta correcta a la pregunta: el OP necesita cambiar la vista de github del "padre", por lo que cuando emite solicitudes de extracción, van al nuevo padre y no al anterior. Parece que la única respuesta es eliminar el repositorio y el tenedor de nuevo. – Ether

+21

Esto es una solución para una característica que falta en github. – abergmeier

+1

Tal vergüenza github todavía no tiene un mejor flujo de trabajo para esto. – Ashimema

2

Suponiendo que realizó la bifurcación correcta y la adición de corriente ascendente ver githubHelpOnFork; cambiar sólo la URL aguas arriba, hacer:

  1. comprobar cómo aparece la corriente aguas arriba y el origen como:

    git remote -v 
    
  2. si ha observado aguas arriba enumerado y sólo desea cambiar su url, hacer lo que @ poke sugerido (si no se sigue el enlace helpGithub arriba para añadir un nuevo aguas arriba):

    git remote set-url upstream git://example.com/NewOriginal.git 
    
  3. continuación, compruebe que aguas arriba está apuntando a la nueva URL

    -v git remote

Cuestiones relacionadas