2011-03-24 24 views
5

Soy nuevo en Git. Actualmente, estoy experimentando este escenario:problema con el mensaje de confirmación después de que los conflictos se resolvieron al fusionar

Paso 0. Estoy trabajando en un sub -branch

Paso 1. He añadido & comprometido archivo1, archivo2, archivo3 en mi sub -branch con confirmar el mensaje msg1, msg2, msg3 respectivamente.

Paso 2. checkout master para cambiar al maestro rama

Paso 3. pull origin master a actualizar la rama principal con código de la versión más reciente origen

Paso 4. merge sub-branch de fusionar mi código de trabajo a la maestro actual código de sucursal

Entonces, llegué conflicto en fichero2,

Luego, resolví manualmente los conflictos. Ahora, se debe agregar file2 porque hay cambios en este archivo.

Paso 5. add file2 en rama principal, porque he resuelto los conflictos de este fichero

Paso 6. ¿Qué mensaje de consignación debería escribir ahora? el msg2 solamente? o msg1, msg2, msg3 todo necesita ser reescrito ahora? (No quiero perder los mensajes cometer msg1, msg2, msg3 para los archivos de los que trabajé)

Respuesta

8

Usted no está escribiendo un nuevo mensaje de confirmación de esas confirmaciones fusionadas; estás escribiendo un mensaje de compromiso para la fusión. Su historia va a tener este aspecto:

- x - o - o - o (origin/master) - X (master) 
    \       /
    1 - 2 - 3 (sub-branch) ------ 

El mensaje de consignación que estás escribiendo es para X.Los commits 1, 2 y 3 son antepasados, aún en el historial, y aún tienen sus mensajes de confirmación. No hay forma de cambiar esos con una fusión.

El mensaje de confirmación para X, si no tiene conflictos, tendrá un valor predeterminado como Merge branch 'sub-branch'. Si usted tiene conflictos, todavía tendrá que a medida que la primera línea, sino también una lista de los archivos que tenía conflictos:

Merge branch 'sub-branch' 

Conflicts: 
    file2 

Este es un suave toque que usted ha hecho algo más significativo que una fusión simple: tenía que hacer un trabajo manual para resolver conflictos en file2. Si lo desea, puede agregar una nota rápida sobre qué causó esos conflictos y cómo se resolvieron. De lo contrario, solo usa ese mensaje tal como está! Recuerde, esta es solo una descripción de la combinación (y resolución de conflictos). Los commits que fusionaste tienen sus propios mensajes de confirmación.

+0

Ahora, me sale todo el proceso, gracias :) – Mellon

+0

+1 Una muy buena respuesta :) –

3

Una vez que resuelva el conflicto y git add <conflicted file> cuando se va de a git commit debe proporcionar una pre-compilados para el mensaje de confirmación fusionar y cualquier commit resuelto. ¿No es así? Las otras confirmaciones fusionadas no se perderán, no debería tener que volver a escribir nada.

  1. Comprometerse a BranchB
  2. git checkout master
  3. git pull origin master
  4. git merge BranchB
  5. resolver los conflictos en el archivo (s)
  6. git add <conflicted file(2)>
  7. git commit

Paso 7: Si se llama sin abrir el params debe comprometerse por defecto del editor de mensajes con un mensaje decente que explica la fusión y resolvió los conflictos (creo)

+0

Gracias, lo entiendo :) – Mellon

Cuestiones relacionadas