The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

使用 SourceTree 查看 Git 版本線圖 (Graph) 的注意事項

上週在設計 Git 練習題目時,意外發現一個看似 SourceTree 這套 Git 版控工具的問題 (Bug),就是在開啟一些特定 Git 版本庫的時候,其版本線圖 (Graph) 會整個大亂,非常奇怪。我後來到官網論壇發問後才得到答案,原來有個小地方需要注意,各位有在用 SourceTree 的人應該也要注意一下。

我在 GitHub 有設立一個小專案,用來描述這個問題,請依照下列步驟重現問題:

  1. 先複製 (Clone) 這個範例專案下來
    git clone https://github.com/doggy8088/SourceTree_Odd_Graph_Demo
  2. 試圖取出 branch1 分支
    git checkout branch1
  3. 加入此工作目錄到 SourceTree 程式裡,然後點選 master 分支

此時你會看到這個 master 分支的版本線圖全亂了,它變成一個孤兒的分支,實在太奇怪了!


我如果用 TortoiseGitShow log 功能查看線圖,則完全沒問題!

後來終於發現,原來是 SourceTree 在顯示線圖時,預設排序為 Date Order ( 以提交時間做排序 )

只要調整為 Ancestor Order ( 以各版本祖先的順位做排序 ) 就完全解決了!

其實 Ancestor Order 才是原本 Git 顯示圖形時該使用的排序方式,因為 Git 支援修改版本的機制,例如透過 Rebase (重新指定基礎版本位置) 就可以修改版本的順序,自然也不會照著提的順序顯示版本,圖形自然也畫不出來!

我認為唯一使用 Date Order ( 以提交時間做排序 ) 的時間,是當開發人員單純想看提交的時間順序時才有用,只是這時的版本線圖就不一定準確了,這點要特別小心。

相關連結