2012-04-25 10 views
7

¿Es posible obtener 'git log' para dar la fecha cuando un conjunto de cambios aterrizó en una rama en lugar de la fecha en que se creó el conjunto de cambios? 'git log -graph' (ejemplo de salida truncada a continuación) me da mucho de lo que quiero, pero aún imprime las fechas cuando se crearon los conjuntos de cambios individuales en lugar de cuando se fusionaron en esta rama.git log foo..bar - cómo ver * fechas de fusión * para conjuntos de cambios?

* commit 7e8d68fc58b915cc17bca41be833c4f7a062cd3c 
|\ Merge: 1b4f10d af0dcdd 
| | Date: Wed Apr 25 17:40:16 2012 +0100 
| |  Merge branch 'foo' 
| * commit af0dcdd078197a852fcfad11c5111aa11579aa05 
| | Date: Wed Apr 25 17:36:50 2012 +0100 
| |  t2: adding lorem ipsum again 
| * commit 569f5de0eb40cbf198771812f9b099cf71b5b056 
| | Date: Wed Apr 25 17:36:36 2012 +0100 
| |  t1: adding lorem ipsum 
* | commit 1b4f10d3eea7c9c6304f7b1fd41818b932e4dad0 
| | Date: Wed Apr 25 17:38:24 2012 +0100 
| |  t4: fi fo fa fum x 2 
* | commit d25fa0359fbe655b6a4adeb6225ac283b3543ece 
|/ Date: Wed Apr 25 17:38:10 2012 +0100 
|  t3: fi fo fa fum 
* commit d3239b3e327f740fc7194ecf164538361f715ab5 
    Date: Wed Apr 25 17:34:50 2012 +0100 

En lo anterior la salida es de la rama master. t1 y t2 se crearon en la rama foo; t3 & t4 se crearon en bar. Luego se combinó bar en master seguido por la combinación de foo en el maestro.

Respuesta

4

Puede ver parte de la respuesta: Cuando la rama foo se fusionó en master, creó una nueva confirmación (7e8d68) con dos padres.

Pero cuando bar se fusionó con master, que era una combinación de avance rápido. Es decir, todos los commits en bar eran más nuevos que el trabajo más reciente en master, por lo que solo podían insertarse en el extremo.

Eso hace que el diseño sea más simple, por lo que es el comportamiento predeterminado. Pero no deja constancia de la fusión: en lo que respecta a su historial, parecerá que esos commits se realizaron en el master en primer lugar.

Para evitar esto, es posible decirle a git explícitamente que evite las fusiones de avance rápido: es decir, cada fusión debería dar como resultado una fusión de confirmación con dos padres, incluso si fuera posible una fusión rápida. Para hacer eso, simplemente use la bandera --no-ff en el comando git merge.

Por desgracia, porque eso es un cambio en la fusión comportamiento en lugar de la tala comportamiento, usted no será capaz de hacerlo con carácter retroactivo - la información de sus anteriores fusiones avance rápido no existe, por lo que hay no hay forma de obtener git log para mostrarlo.

+0

Gracias! Supongo que tendré que usar la vista '-graph' para darle sentido ... –

Cuestiones relacionadas