2012-08-29 9 views
6

Tenemos maestro y producción rama. La rama principal contiene desarrollos actuales, mientras que la rama de producción contiene las cosas que se están ejecutando en el servidor. De vez en cuando, hay una corrección de errores importante que debe aplicarse a ambas ramas.Alternativas a la cosecha de cerezas

Actualmente solo estamos seleccionando el compromiso después de crearlo en la rama principal. Pero a veces esto crea conflictos de combinación cuando fusionamos las ramas. ¿Hay alternativas?

+0

Esto realmente no es una pregunta "idiota". El conflicto de fusión que está viendo es una propiedad de su código (es divergente desde que se implementó el código de producción), no su herramienta. Las herramientas de fusión de git (o cualquier herramienta de combinación) no pueden leer tu mente y decidir qué es lo que realmente "significabas" con el código modificado en el máster. En lo que respecta a las herramientas, 'git am' podría funcionar mejor para usted que cherry-pick, ya que le permite editar la fusión en su lugar sin perder datos de compromiso. –

Respuesta

7

Puede crear una nueva rama (vamos a llamarlo bugfix-a) en la base de combinación de master y production

git checkout -b bugfix-a $(git merge-base master production) 

Aplique su corrección de errores en esa rama

>>/path/to/file echo 'this fixes the bug' 
git add /path/to/file 
git commit -m 'important bugfix' 

A continuación, combinar esta nueva rama a maestro y producción:

git checkout master 
git merge bugfix-a 
git checkout production 
git merge bugfix-a 

De esta manera, usted podrá fusionar el maestro y la producción en una fecha posterior y Git será lo suficientemente astuto como para determinar qué cometido elegir.

(Monótono - sí, no es Git - llama este flujo de trabajo daggy fixes)

4

Crear una rama separada para cada revisión, y fusionarla tanto en su rama de desarrollo y su rama de producción.

El modelo gitflow funciona muy bien en general, y recomiendo la comprobación de esto: http://nvie.com/posts/a-successful-git-branching-model/

Su rama principal es análoga a la rama de desarrollo, y su rama de producción es análoga a su amo

enter image description here

3

Puede usar Gitflow. Creo que el 'hotfix' maneja su escenario.