13

チェンジセットが作成された日付ではなく、チェンジセットがブランチに到達した日付を示すために「gitlog」を取得することは可能ですか?'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てマスターにマージされました。

4

1 に答える 1

16

答えの一部を見ることができます:ブランチfooがにマージされたときmaster、それは2つの親を持つ新しいコミット(7e8d68)を作成しました。

しかし、barにマージされたときmaster、それは早送りのマージでした。つまり、のすべてのコミットはbar、の最新の作業よりも新しいmasterため、最後に追加することができます。

これにより、レイアウトが単純になるため、これがデフォルトの動作になります。しかし、それはマージの記録を残しません-あなたの歴史に関する限り、それらのコミットはそもそも行われたように見えますmaster

これを回避するために、早送りマージを回避するようにgitに明示的に指示することができます。つまり、早送りマージが可能であっても、すべてのマージで2つの親とのマージコミットが発生する必要があります。これを行うには、コマンドの--no-ffフラグを使用するだけです。git merge

残念ながら、これはログ動作ではなくマージ動作の変更であるため、さかのぼって行うことはできません。以前の早送りマージの情報は存在しないため、表示する方法はありません。git log

于 2012-04-25T17:07:45.363 に答える