2013-11-25 108 views
17

我對圖形git日誌的輸出感到很困惑。如何理解git log - 圖

我明白,每個*意味着一個提交,無論它是分歧,共同或合併提交。 我明白,管道意味着分支。

讓我們來看一個簡單的圖形日誌:

enter image description here

首先,哪個部門不紅管(最左手一個)代表了?我不認爲這是我目前的分支,因爲在我結賬到其他分支之後,圖表看起來是一樣的。此外,它也不代表主分支。其次,如果最左手的分支代表一個分支,爲什麼它在提交「0e5b5」之後改變顏色?

我搜索了關於如何閱讀git log圖表的教程,很不幸,我什麼都沒有。如果有關於這個主題的一些真棒教程,請隨時分享。

+2

可能的重複[如何讀取git log圖表](http://stackoverflow.com/questions/5382255/how-to-read-git-log-graph) – Andy

+3

添加'--decorate'選項來標記每個分支頭部以及分支名稱 – chepner

回答

4

Git從目前的提交看着祖先的作品。分支不是「實體」,它們是(移動)參考。 git log(或者gitk具有不同的配色方案,但與git log --graph或tig類似)無法知道當前分支是分支A還是分支B的後代。它只知道父母。從男人git日誌:

git log -p -m --first-parent 
     Shows the history including change diffs, but only from the "main 
     branch" perspective, skipping commits that come from merged 
     branches, and showing full diffs of changes introduced by the merges. 
     This makes sense only when following a strict policy of merging 
     all topic branches when staying on a single integration branch. 

會稍微解決您的關注。 git log默認情況下使用當前簽出的提交作爲參考(與執行相同)git log HEAD

雖然我個人認爲git的man page非常清晰,但您可能需要查看gitk或tig。圖形界面後面是一個像終端一樣的最小gitk工具,我用兩個取決於我想要做的事情。

+3

任何想法爲什麼在OP提交後它改變顏色? – Levon

+0

git在gitk改變每個叉子的顏色,這是一種視覺輔助,就像我在我的回答中所說的那樣在svn/cvs的視覺中,它並不是一個「分支」。有父母。在這裏,提交701fe ...是0e5b5 ...和ba051提交的子代。沒有辦法讓git「看到」701fe的「分支」......「比」ba051更「分」0e5b5 ......所以它們是3種不同的「歷史」,因此它們有自己的顏色。 如果您正在查看更多分支,顏色會發生變化 – Sebastien