14713


`git log` を利用する際に、便利なので、ほとんど`--graph`, `--oneline`オプション(+α)を指定して利用しています。

このときに、歴史的に交わりのないコミット群A,Bがあった場合には、一方のコミット群がもう一方コミット群のすぐ上に表示されてしまい、あたかも歴史がつながっているかのように見えてしまいます。(revision
range の指定の仕方次第で発生する)

`--oneline`
オプションをつけなければ、このようなことはおこらないのですが、そうすると歴史の表示が`--oneline`の場合に比べて間延びしてしまうので、できれば、`--oneline`オプションを利用しながら、歴史がつながっているかどうかを判定したいと考えています。これは実現可能でしょうか。


CC BY-SA 3.0
2015-08-21T15:51:25.267
14710
2015-08-21T16:49:49.637
754
question
git
git log --graph --oneline において、祖先--子孫関係にないコミットを判定できるか


GUI が使える環境であれば、同じrevision 等で`gitk`を起動すれば、歴史の graph
を出力しながら、つながりのない歴史も判別できることに気づきました。


CC BY-SA 3.0
2015-08-21T16:18:38.063
14711
2015-08-21T16:18:38.063
754
14710
answer


`--oneline` の代わりに、 `--pretty='%h %s%n'`
とすれば、末尾に改行が入るため、コミットを繋ぐラインが表示されるようになります。もちろん、直接繋っていないコミット同士は繋がりません。  
改行の分、やや間延びしますが、 `--pretty=short` などよりはコンパクトです。

例えば、

[code]

    o---*---*---* bar
     \--*---*     foo
    
[/code]

といったリポジトリで、`foo...bar` を表示させると以下のようになります。

[code]

    git log  --graph --oneline --pretty='%h %s%n' foo...bar
    
    * d2c1f34 bar-3
    | 
    * a2248b6 bar-2
    | 
    * acf317f bar-1
    
    * ea0dc06 foo-2
    | 
    * 829a084 foo-1
    
[/code]

毎度フォーマット指定をするのが面倒なら、`git config` で `format.pretty`
を設定してしまうという手も。この場合、複雑な設定でも、コマンドで直接記述する必要がなくなるので、`--decorate`
に相当する記述も追加してみたり、色が出るようにするなど凝ってみるのもよいかもしれません。


CC BY-SA 3.0
2015-08-21T16:49:49.637
14713
2015-08-21T16:49:49.637
7831
14710
answer