当变更集落在分支而不是创建变更集的日期时,是否可以让'git log'给出日期? 'git log --graph'(下面的示例截断输出)给了我很多我想要的东西,但它仍会打印创建单个变更集的日期,而不是它们合并到此分支时。
* 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
合并为主。{/ p>
答案 0 :(得分:7)
您可以看到部分答案:当分支foo
合并到master
时,它创建了一个包含两个父母的新提交(7e8d68)。
但是当bar
合并到master
时,它就是快进合并。也就是说,bar
上的所有提交都比master
上的最新作品更新,所以它们可以被添加到最后。
这使得布局更简单,因此这是默认行为。但它没有留下合并的记录 - 就你的历史而言,它看起来就像那些提交首先在master
完成。
为了解决这个问题,可以明确地告诉git避免快进合并:也就是说,即使可以进行快进合并,每个单独的合并都应该导致与两个父进行合并提交。为此,只需使用--no-ff
命令上的git merge
标志。
不幸的是,因为这是合并行为而非记录行为的变化,您将无法追溯性地执行此操作 - 来自您之前的快速信息 - 正向合并不存在,因此无法让git log
显示它。