Git和SVN的區別

2021-07-12 04:57:43 字數 1368 閱讀 6529

如果你之前一直在使用svn來進行版本控制的操作,如果你還沒有機會試試git,我想你現在應該先了解一下它。

git不僅僅是乙個版本控制系統,它也是乙個內容管理系統(cms),工作管理系統等。如果你是乙個具有使用svn背景的人,你需要做一定的思想轉換,來適應git提供的一些概念和特徵。所以,這篇文章的主要目的就是通過介紹git能做什麼,它和svn在深層次上究竟有什麼不同來幫助你認識它。

1、git是分布式的,svn不是:

這是git和其它非分布式的版本控制系統,例如svn、cvs等,最核心的區別。如果你能理解這個概念,那麼你已經上手一半了。需要做一點宣告,git並不是目前第乙個或唯一的分布式版本控制系統,還有一些系統,例如bitkeeper、mercurial等,也是執行在分布式模式上的。但git在這方面做的更好,而且有更多強大的功能特徵。

git跟svn一樣有自己的集中式版本庫和伺服器。但git更傾向於被使用於分布式模式,也就是每個開發人員從中心版本庫、伺服器上check out**後會在自己的機器上轉殖乙個自己的版本庫。可以這樣說,如果你被困在乙個不能連線網路的地方時,就像在飛機上、地下室、電梯裡等,你仍然能夠提交檔案,檢視歷史版本記錄,建立專案分支等。對一些人來說,這好像沒多大用處,但當你突然遇到沒有網路的環境時,這個將解決你的**煩。

同樣,這種分布式的操作模式對於開源軟體社群的開發來說也是個巨大的恩賜,你不必再像以前那樣做出補丁包,通過email方式傳送出去,你只需要建立乙個分支,向專案團隊傳送乙個推請求。這能讓你的**保持最新,而且不會在傳輸過程中丟失。github.com就是乙個這樣的優秀案例。

2、git把內容按元資料方式儲存,而svn是按檔案:

所有的資源控制系統都是把檔案的元資訊隱藏在乙個類似.svn、.cvs等的資料夾裡。如果你把.git目錄的體積大小跟.svn比較,你會發現它們差距很大。因為.git目錄是處於你的機器上的乙個轉殖版的版本庫,它擁有中心版本庫上所有的東西,例如標籤、分支、版本記錄等。

3、git分支和svn的分支不同:

分支在svn中一點不特別,就是版本庫的另外乙個目錄。如果你想知道是否合併了乙個分支,你需要手工執行像這樣的命令svn propget svn:mergeinfo,來確認**是否被合併。

然而,處理git的分支卻是相當的簡單和有趣。你可以從同乙個工作目錄下快速的在幾個分支間切換。你很容易發現未被合併的分支,你能簡單而快捷的合併這些檔案。

4、git沒有乙個全域性的版本號,而svn有:

5、git的內容完整性要優於svn:

git的內容儲存使用的是sha-1雜湊演算法。這能確保**內容的完整性,確保在遇到磁碟故障和網路問題時降低對版本庫的破壞。這裡有乙個很好的關於git內容完整性的討論~

SVN和GIT的區別

1.git是分布式的,svn不是 這是git和其它非分布式的版本控制系統,例如svn,cvs等,最核心的區別。如果你能理解這個概念,那麼你就已經上手一半了。需要做一點宣告,git並不是目前第乙個或唯一的分布式版本控制系統。還有一些系統,例如bitkeeper,mercurial等,也是執行在分布式模...

Git和SVN的區別

git和svn都是 管理系統,總結了下兩者的區別 git是分布式的,每個人在本地都可以一次或多次提交 到自己的庫,在合適時間在提交到主庫。而svn是集中式的,一提交就是到主庫 git分支可以只自己見 未push前 svn新建的分支所有人可見 git分布式可以離線開發,svn不行,當 伺服器故障時,s...

Git和SVN的區別

1 最核心的區別git是分布式的,而svn不是分布的。能理解這點,上手會很容易,宣告一點git並不是目前唯一的分布式版本控制系統,還有比如mercurial等,所以說它們差不許多。話說回來git跟svn一樣有自己的集中式版本庫和server端,但git更傾向於分布式開發,因為每乙個開發人員的電腦上都...