2011-09-01 34 views
20

Estoy trabajando en un proyecto (solo) y para cada función que desarrollo, creo una nueva rama, trabajo en esta característica y luego la fusiono a maestra. Por lo tanto, normalmente nunca trabajo en dos ramas diferentes a la vez y nunca toco el maestro mientras trabajo en una rama.Git branches & commits history after merge

Cuando fusiono una rama, veo que (usando gitx y gitk) el historial de la rama principal obtiene todas las confirmaciones que he hecho a la rama fusionada. Quiero decir que si tengo algo como:

master a-b-c-d 
       \z-x-y-- 
       |branch name 

después de combinación consigo:

a-b-c-d-z-x-y 
      |branch name 

Sí, veo el nombre de la rama fusionada resaltada (usando gitx y gitk), pero lo que estaba esperando es algo muestra exactamente dónde se realizan confirmaciones (a qué rama) como:

master a-b-c-d--------M-- 
       \-z-x-y-/ 
       |branch name 

Así que estoy esperando ver una confirmación "M" que representa la fusión que he hecho de dominar, sin Para que parezca, todas las confirmaciones que he hecho a la nueva rama se han hecho para dominar.

¿Mi expectativa es correcta? O este es el comportamiento normal de git?

Respuesta

29

Ese es el comportamiento normal de Git. Está haciendo lo que se denomina una fusión de "avance rápido", porque su rama está estrictamente por delante de la sucursal master.

Si realmente desea conservar el historial de sucursal (aunque yo recomendaría que no se moleste), puede usar git merge --no-ff para forzarlo a crear una confirmación de fusión incluso cuando puede hacer una actualización rápida.

+5

Hay algunas ventajas de usar '--no-ff' cuando se fusiona en ramas de características. La principal es que se trata de una reversión de un solo intento para respaldar la característica. –

+0

Muchas gracias por esta útil información. @ Cameron podría explicar por qué no se recomienda hacerlo? y puedo "reprimir" todas mis viejas fusiones? (Esto básicamente porque necesito escribir un informe sobre mi proyecto para que las capturas de pantalla de mis sucursales sean útiles) – Ansd

+2

@Ans: No lo recomiendo simplemente porque nunca he encontrado un uso para él. Prefiero mantener la historia 'maestra' tan simple y lineal como sea posible, y nunca tuve que preocuparme por una rama de características una vez que se ha fusionado. El punto de @Dan Ray sobre una reversión de un solo disparo es válido, sin embargo, por lo esa podría ser una buena razón para usar 'no-ff'. Probablemente no podrá regenerar fácilmente el historial de sucursal, aunque si todavía tiene todas las ramas antiguas, entonces podría generar manualmente una sucursal que combine todas las características en el mismo orden en que las fusionó en 'master'. –