為什麼你不該滿足於 SVN 而該改用 Git?
先講答案:因為 SVN Branch 維護非常麻煩(就我個人維護六七個以上 svn branch 的經驗…)。
常常做這些 code merge 動作都比寫程式本身還花時間,更可能一不小心就許多未知的錯誤。
以下是我推薦的改使用 GIT 來管理程式碼的理由:
- **不只是 SVN 加強版:**GIT 跟 SVN 的根本架構跟概念完全不同,絕對不只是 CVS 到 SVN 這種躍進而已。
- Branch:對 Git 來說,所有指令都是以 repository 基本單位,切換 branch 只要下個指令,你當下的程式碼就會變換(snapshot)。但對於 SVN 來說它先天上的弱點就是 Branch 的支援度不高,所以我們才需要 LABEL,因為 SVN 只知道傻傻的把 revision number 往上加,Branch 一多,父節點是誰都不知道了。
- **更聰明的 Commit:**不同於 SVN 只單純透過 ‘diff’來比較需要上傳的程式,Git 是做整個 ‘snapshot’ 的比對,沒有在同一行做修改就一定會產生衝突的問題。
- **分散式系統:**即使沒有網路,還是可以很方便的維護程式碼,相較之下,SVN 只要網路一斷,大概只剩下查 log 的功能了。
- SVN 上好用的小烏龜也支援 GIT:tortoisegit。
- **世界上大型的 Open Source Projects 都使用 GIT:**如:Android, Linux, LLVM, 等…。
以下這兩篇文章也清楚地說明為什麼應該捨 SVN 擇 GIT:
1. 3 Reasons to Switch to Git from Subversion
2. Why is Git better than Subversion?
當然,Git 也不是沒有缺點,其最大的缺點就是學習曲線很陡,指令太多。不過現在網路資源這麼多,為何不花個 15 分鐘把基本指令學會並且開始學習 Git 呢?