2012-04-25 151 views
7

当变更集落在分支而不是创建变更集的日期时,是否可以通过'git log'给出日期? 'git log --graph'(下面的示例截断输出)给了我很多我想要的内容,但它仍然会打印创建单个更改集时的日期,而不是将它们合并到此分支中时的日期。git log foo..bar - 如何查看*合并日期*的变更集?

* 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 

在上面的输出是从master分支。 t1和t2分别在foo分支上创建; t3 & t4创建于bar。然后bar合并为master,然后将foo合并到主设备中。

回答

4

您可以看到部分答案:当分支foo合并到master时,它创建了一个包含两个父项的新提交(7e8d68)。

但当bar并入master,这是一个快进合并。也就是说,bar上的所有提交都比master上的最新作品更新,因此它们可能只是被加到最后。

这使得布局更简单,所以它是默认行为。但是它没有留下合并的记录 - 就你的历史而言,它看起来像那些提交首先在master上完成的。

为了解决这个问题,可以明确地告诉git避免快进合并:也就是说,即使可能进行快进合并,每一次合并都会导致与两个父代的合并提交。要做到这一点,只需使用git merge命令中的--no-ff标志即可。

不幸的是,因为这是在合并行为,而不是变化记录行为,你将不能够做到这一点追溯 - 从以前的快进合并不存在的信息,所以有没办法让git log来显示它。

+0

谢谢!我想我只需要使用'--graph'视图来理解它... – 2012-04-26 08:48:25

相关问题