git log graphの読み方


92

gitコミュニティブックでは、

あなたができるもう一つの興味深いことは、以下のように '--graph'オプションでコミットグラフを視覚化することです:

$ git log --pretty=format:'%h : %s' --graph
* 2d3acf9 : ignore errors from SIGCHLD on trap
*   5e3ee11 : Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 : Added a method for getting the current branch.
* | 30e367c : timeout code and tests
* | 5a09431 : add timeout protection to grit
* | e1193f8 : support for heads with slashes in them
|/
* d6016bc : require time for xmlschema

コミット履歴の行のかなり良いASCII表現を提供します。

このグラフをどのように読むべきですか?他とどう420eac9違うの?

回答:


116

アスタリスクは、何かがコミットされた場所を示しています。

e1193f85a09431および30e367c左ブランチにコミットされました(|右ブランチでa が生成されます)一方で、右ブランチ420eac9にコミットされました(|左ブランチでa が生成されます)。そして、それ420eac9他の部分とは違うところです。それが正しいブランチへの唯一のコミットです。

完全を期すために:

  • d6016bc 分岐点でした
  • 5e3ee11 マージするコミットです
  • 2d3acf9 マージ後の最初のコミットです

4
グラフに示すように、コミット時間について質問しました。グラフでは、「420eac9」が「30e367c」、「5a09431」、および「e1193f8」の上に表示されています。それは常に「420eac9」が他の3つの後にコミットされたことを意味しますか、それともブランチでのコミットがグループ化され、ブランチ間で現れる順序に時間の相関関係がないのですか?
Parag、2014年

4
@Parag:ブランチのコミットはグループ化されます。ブランチの420eac9最初のコミット後に行われたe1193f8が、必ずしもその後ではなかった30e367c
eckes

1
@eckes |では、左側(最も左側)のシンボルは、私が現在いるブランチを表していますか?
J86

@ J86別のブランチに切り替えて同じコマンドを実行すると、同じ出力が得られるため、現在のブランチへの参照はグラフにありません
onofricamila

19

420eac9その「下」にある3つのコミットとは異なるブランチにあります。ブランチはその後分岐しd6016bc、それらはマージされました5e3ee11


4
多分分岐分岐よりも良い表現は、2番目の分岐がd6016bc元の分岐から作成され、並行して開発されたことです。
Ilkka
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.