怪我咯2017-04-25 09:05:25
svn 是集中式版本管理系統,是較傳統的 CVS 的繼承者。它是典型的 C/S 結構:有一個中心倉庫,裡面保存了專案程式碼的不同版本。而開發人員在本地在任何時候只有這個倉庫中的一個版本,如果想要其他版本,或者同步版本,必須和這個中心伺服器通訊才能獲得。想像一個極端的場景,如果中心伺服器的硬碟報銷,你無法從自己的硬碟上重建專案的所有版本,即使你是這個專案的唯一開發者,所有版本都在你的硬碟上建立。
而 git 是分散式版本管理系統,就是說沒有中心伺服器。你會給一個專案的程式碼建立一個倉庫 (Repository),即使你只是一個人開發,也可以幫你管理這個專案的程式碼。這個倉庫可以認為相當於 SVN 的中心伺服器,裡麵包含了程式碼的全部版本。當然,你自己不需要透過網路來和這個倉庫來互動。
那麼對於團隊開發,豈不是每個人都有一個倉庫?是的。每位開發者都對這個專案擁有個人的倉庫,這些倉庫之間的地位是平等的。這些倉庫之間可以透過 clone (複製), pull (拉), push (推)等 SVN 沒有的操作來進行倉庫之間的同步。這讓 git 比 svn 高得多的靈活性。當然,如果團隊中的成員都自行其事地選擇版本管理方法,這個分散式模型是會帶來許多麻煩的。所以在團隊必須選擇一個統一的版本管理策略。
在實務中,一般會建立一個中立的倉庫,不在任何成員的機器上,讓它來當團隊的仲裁者。每位成員的 git 倉庫都約定與這個中心倉庫同步,例如 github.com, bitbucket.com 等網站就是提供託管中心倉庫的服務。當然,這些網站目前都提供更多的服務,如網頁操作、PR 等。
分散式版本管理系統不只有 git 一種,還有 Hg 等。但 git 是最成熟,得到了最多的支援。特別是 github.com 透過社交化等思路更加拓寬了它的使用場景。
從實用上來說,SVN 對比 git 沒有優勢。個人的安裝使用上,兩者一樣方便。專案組方面,git 較為容易管理。 git 的實現極為可靠和高效,大大鼓勵了多分支開發,git 實踐中的 git-flow 等高階的團隊工作策略更讓 git 具有極高的價值。
當然,git 在理論上比 svn 有更多的操作,需要學習的概念也多得多。但理解這些絕對是值得的。
最後推薦 SourceTree 軟體,它比一般 IDE 中的版本管理要漂亮得多,對於新手來說非常直觀和容易學習。
高洛峰2017-04-25 09:05:25
以後提問的時候請注意拼寫,並且請不要在沒有解決問題的情況下採納問題,給人刷經驗的嫌疑。
這種問題過於開放,不容易有針對地回答,即使回答了也不一定能夠得到很多幫助。
我覺得git比較偏向社交,也就是你想把你的idea讓別人也知道,當然,我指的是 https://github.com/ 。
git用起來挺方便的,除了github的訪問速度不是很樂觀,整體來說是不錯的。
svn沒怎麼用過,但是聽說有git-svn這種概念(軟體),我覺得掌握一個git對我來說足矣。
其他的等高人回答好了。
迷茫2017-04-25 09:05:25
svn是集中式版本控制系統,一個專案只有唯一的一個版本庫與之對應,所有專案成員都透過網路向該伺服器提交。具有輕量拷貝、保存原始拷貝等功能,有集中式固有的單點故障、網路延遲等問題。
git為Linus開發的分散式版本控制系統,具有獨特的設計,性能高,使用習慣和其他的控制系統差異很大。
參考資料:《Git權威指南》蔣鑫