下面的截圖取自SourceTree。我創建了一個簡單的git倉庫,其中包含一些提交。對於每一次提交,評論說明我進行提交時我在哪個分支上。爲什麼git分支圖不能正確地跟蹤分支?
正如你所看到的,樹圖是(可以說)次優的,該提交掌握都不盡相同的顏色,也不是在一個單一的車道。爲什麼是這樣?
(由GitHub上和到位桶得出的樹形圖看起來類似的問題受苦,所以它不只是SourceTree。)
顯然它沒有多大關係在這個簡單的例子,但在我的一些項目,我們使用git-flow的變體,並且在查看樹圖時通常很難跟蹤每個git-flow「泳道」。部分原因是因爲樹形圖不會隨着時間的推移保持每個泳道的顏色相同。
我懷疑是樹圖是(可以說)不理想的,因爲git的回購實際上並不包含足夠的信息來繪製樹圖我想要的方式。特別是,當兩個提交是一個普通提交(例如,當你分支)的子代時,git不知道父提交是否與子1或子2「在同一分支上」。或者換句話說,它不會不知道哪個小孩是樹枝,哪個小孩是樹幹的延續。我有這個權利嗎?
承諾掌握所有在單個通道中的通道:在提交94f458e處從藍色變爲紫色的通道。至於爲什麼它們是不同的顏色,那麼對於源代碼來說,這比堆棧溢出更重要。也許開發人員選擇將按時間順序排列的最新提交的路徑視爲不分支的路徑?根據路徑的名稱提交功能請求以更改它。 – 2014-11-05 23:36:41
當我說「車道」時,我的意思是「列」。而我所希望的是,如果所有提交給主人的提交都在一個列中,而要發佈的提交到另一列中。我的意思是,如果你給了人類DAG,分支指針和提交列,他們可能不會像上面那樣繪製樹圖。 – 2014-11-06 15:37:50
儘管git並沒有要求用戶提供足夠的信息來繪製正確的泳道,但在許多情況下,通過使用提交消息作爲提示可以推斷出更好的繪圖。例如,合併消息通常開始「合併分支'B'到A」;在這種情況下,很明顯兩個源分支的名稱應該用於泳道目的。用戶可以輕鬆添加更多清晰度;例如,每當我創建一個分支時,我都會在其中創建一個空的提交「從'A'創建分支'B'」。圖形繪製程序可以提供更多的提示。 – 2017-01-17 02:53:26