2012-04-04 10 views
26

Soy un poco nuevo en el control de versiones con GIT. Leí esto Guide y estoy siguiendo el enfoque básico que se muestra en el diagrama HERE. Aún así, tengo algunas dudas sobre cómo usar las ramas de git para separar el desarrollo de nuevas características del código existente.Cómo usar correctamente git y ramas

Aquí hay un ejemplo. Supongamos que, al inicio, mi repositorio contiene los siguientes dos ramas principales:

  • rama principal (que contienen la versión de lanzamiento)
  • Desarrollar Rama (que contiene nuevas correcciones o características para separarlos de características existentes del proyecto)

Cuando necesito desarrollar nuevas características o módulos, creo ramas desde Develop y comienzo los nuevos proyectos de código allí. Por ejemplo, creo tres ramas nuevas para agregar funciones relacionadas con Sun, Star y SuperNova. Ahora, mi repositorio contiene cinco ramas: la rama

  • Maestro: Release 1.0.0
  • Desarrollar rama: Modificación después de la liberación 1.0.0
  • rama NewModule_Sun: añadir Sol para proyectar (crear a partir Desarrollar rama)
  • NewModule_Star rama: añadir la estrella para proyectar (crear a partir Desarrollar rama)
  • rama NewModule_SuperNova: añadir SuperNova a Project (crear a partir Desarrollar rama)

Para la versión 1.0.1, deseo incluir los módulos Sun y Star, pero no SuperNova. Por lo tanto, los combina con Desarrollar y luego se funden desarrolle con el lanzamiento:

  1. Combinar NewModule_Sun en Desarrollar
  2. Combinar NewModule_Star en Desarrollar
  3. Combinar convertirse en Maestro (versión 1.0.1)

La rama Desarrollar debe mantenerse de forma permanente, pero las ramas Sun y Star ya no son necesarias. Ellos se eliminan:

  1. Eliminar la rama NewModule_Sun
  2. Eliminar la rama NewModule_Star

después de estos cambios mi repositorio contiene los siguientes tres ramas:

  • Maestro Branch: Release 1.0. 1
  • Develop Branch: Modificación después de la versión 1.0.1
  • Rama NewModule_SuperNova: Modificación después de la versión 1.0.0 (creado a partir Desarrollar cuando no se fusionó con las ramas de la estrella/Sun)

==

En primer lugar, estoy usando git ramas correctamente?

En segundo lugar, revisé el historial de la rama de desarrollo final, y parece que he perdido algo de información sobre el NewModules. ¿Eso es normal? Y, ¿es posible transferir toda la información del historial a la rama Desarrollo?

Gracias!

+1

Esto puede ayudar. http://stackoverflow.com/questions/2613903/does-deleting-a-branch-in-git-remove-it-from-the-history – codef0rmer

Respuesta

16

¿Estoy haciendo un uso proper de git?

Sí, el flujo de trabajo que describe es prácticamente el flujo de trabajo estándar. Creas una rama, trabajas en ella y cuando terminas la fusionas y eliminas la rama no necesaria (a menos que continúes desarrollándote en esa rama).

Después de la eliminación de una rama, la visualización de la historia me parece que me he perdido todos los información sobre la rama en sí ... es eso normal?

Sí, esto es normal.

¿es posible eliminar una rama pero dejando la información del historial intacta?

No estoy seguro de lo que quiere decir aquí. Siempre que haya fusionado la rama antes de eliminarla, el historial todavía está allí. Acaba de fusionarlo en otra rama y el historial se puede ver en esa rama. No hay forma de saber cuándo se eliminó una rama si eso es lo que está pidiendo.

+0

ah ok .. Estaba buscando una manera (que me dijeras que es impossibile) para ver el inicio y el final de una sucursal ... es una pena :( – Marcx

+0

@Marcx estoy un poco tarde, pero tal vez tú todavía están buscando esta bandera "git merge --no-ff branchname" –

9

Sugiero que lea http://nvie.com/posts/a-successful-git-branching-model/ que define un buen patrón para la ramificación de git.

He encontrado que mantengo las ramas de desarrollo durante un período, hasta que el historial de cambios que hace en esas revisiones no valga la pena (unos 6 meses), y luego las borro.

+0

He leído que ... En realidad estoy usando ese sistema ... No se explica mi pregunta sobre la eliminación de una sucursal ... esa es básicamente mi duda principal :) – Marcx

+0

Gracias. Como un n00b completo para los paradigmas de ramificación, su enlace era exactamente lo que necesitaba. –