2011-11-02 12 views
5

Pensé que tenía git bastante encerado, pero estoy un poco bloqueado con este problema.Github: obtener una nueva rama de desarrollo en mi tenedor

Aquí está la foto: bifurqué la rama de 'desarrollo' de un proyecto en mi propio repositorio github, clonado en local, creación de la función git-flow, hice cosas y publiqué. Todo muy bien.

Mientras tanto, el proyecto original cambió a una nueva rama de desarrollo (llámalo 'develop2') por lo que mi función publicada no se pudo incorporar al proyecto principal.

Así que - sobre el asesoramiento - Creé una rama local 'develop2', eliminé mi rama 'desarrollar' local, sacó 'develop2' del repositorio principal del proyecto, y luego fusioné esto con mi característica local. Todo bien, EXCEPTO ... mi repositorio github personal todavía tiene la antigua rama 'desarrollar' y la función basada en esa rama.

Entonces, mi pregunta es ¿qué hago ahora? un par de opciones que han considerado:

  1. Eliminar mi tenedor 'desarrollar' en totalidad en github, tenedor 'develop2' del proyecto principal, y luego tirar de esto a mi repo local y se fusionan, a continuación, publicar mi característica de nuevo y emitir una solicitud de extracción. (aunque Incertidumbre: necesitaría para clonar en lugar de tirar de la nueva tenedor así que tenía el origen correcto ..)
  2. Eliminar el 'desarrollar' rama de origen y la función, empuje nueva rama develop2, y así sucesivamente
  3. fuerza de empuje mi sucursal 'develop2' de origen desarrollar, a continuación, cambiar el nombre de ella, y hacer lo mismo con la característica ..

Si algo va mal aunque pueden llegar a atascarse con tener que rehacer todo un montón de cosas, que sería aburrido por decir lo menos. algún consejo de gurús por ahí?

Respuesta

3

No necesita volver a hacer nada: Git está bien equipado para tratar este tipo de problema.

En primer lugar, las horquillas en GitHub son el repositorio completo, por lo que eliminar su "horquilla de desarrollo" realmente no significa nada, solo tiene que llevar los cambios de develop2 aguas arriba a su horquilla. Sugiero que agregue un control remoto llamado upstream para buscar cambios fácilmente desde el repositorio desde el cual bifurqué.

Ahora suponiendo que haya agregado upstream, un git fetch debe desplegar upstream/develop2 en su repositorio local. Me gustaría deshacer su fusión (probablemente git reset --hard develop~), crear una rama develop2 a partir de allí para la coherencia, luego rebase sus cambios locales develop2 en upstream/develop2: .

Antes:

   X---Y---Z upstream/develop2 
      /
      |   H---I---J develop, develop2 
      |  /
      | E---F---G upstream/develop 
      |/ 
A---B---C---D 

Después:

     H'--I'--J' develop2 
        /
       X---Y---Z upstream/develop2 
      /
      |   H---I---J develop 
      |  /
      | E---F---G upstream/develop 
      |/ 
A---B---C---D 
+0

Gracias - Sí que tiene sentido. Pero creo que he encontrado la respuesta. conseguir mi repo github en línea con mi local. Básicamente mi opción 2 anterior pero con un pequeño detalle github necesario. La página está aquí: http://matthew-brett.github.com/pydagogue/gh_delete_master.html En resumen: 1. git push origen develop2 (la nueva rama de desarrollo hasta github repo) 2.Vaya a github repo, haga clic en 'Admin', establezca la rama predeterminada en develop2 3. Luego, puede eliminar la vieja rama dev, es decir. git push origen: desarrollar 4. A continuación, inserte la característica como de costumbre. – user1025174

Cuestiones relacionadas