SVN與Git比較(集中式VS分布式)

2021-08-15 11:39:43 字數 2249 閱讀 2032

一、 集中式vs分布式

1. subversion屬於集中式的版本控制系統

集中式的版本控制系統都有乙個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過客戶端連到這台伺服器,取出最新的檔案或者提交更新。

subversion的特點概括起來主要由以下幾條:

• 每個版本庫有唯一的url(官方位址),每個使用者都從這個位址獲取代

碼和資料;

• 獲取**的更新,也只能連線到這個唯一的版本庫,同步以取得最新資料;

• 提交必須有網路連線(非本地版本庫);

• 提交需要授權,如果沒有寫許可權,提交會失敗;

• 提交並非每次都能夠成功。如果有其他人先於你提交,會提示「改動基於

過時的版本,先更新再提交」… 諸如此類;

• 衝突解決是乙個提交速度的競賽:手快者,先提交,平安無事;手慢者,

後提交,可能遇到麻煩的衝突解決。

好處: 每個人都可以一定程度上看到專案中的其他人正在做些什麼。而管理員也可以輕鬆掌控每個開發者的許可權。

缺點:**伺服器的單點故障。

若是宕機一小時,那麼在這一小時內,誰都無法提交更新、還原、對比等,也就無法協同工作。如果**伺服器的磁碟發生故障,並且沒做過備份或者備份得不夠及時的話,還會有丟失資料的風險。最壞的情況是徹底丟失整個專案的所有歷史更改記錄,被客戶端提取出來的某些快照資料除外,但這樣的話依然是個問題,你不能保證所有的資料都已經有人提取出來。

subversion原理上只關心檔案內容的具體差異。每次記錄有哪些檔案作了更新,以及都更新了哪些行的什麼內容。

2. git屬於分布式的版本控制系統

git記錄版本歷史只關心檔案資料的整體是否發生變化。git 不儲存檔案內容前後變化的差異資料。

實際上,git 更像是把變化的檔案作快照後,記錄在乙個微型的檔案系統中。每次提交更新時,它會縱覽一遍所有檔案的指紋資訊並對檔案作一快照,然後儲存乙個指向這次快照的索引。為提高效能,若檔案沒有變化,git 不會再次儲存,而只對上次儲存的快照作一連線。

在分布式版本控制系統中,客戶端並不只提取最新版本的檔案快照,而是把原始的**倉庫完整地映象下來。這麼一來,任何一處協同工作用的伺服器發生故障,事後都可以用任何乙個映象出來的本地倉庫恢復。這類系統都可以指定和若干不同的遠端**倉庫進行互動。籍此,你就可以在同乙個專案中,分別和不同工作小組的人相互協作。你可以根據需要設定不同的協作流程。

另外,因為git在本地磁碟上就儲存著所有有關當前專案的歷史更新,並且git中的絕大多數操作都只需要訪問本地檔案和資源,不用連網,所以處理起來速度飛快。用svn的話,沒有網路或者斷開vpn你就無法做任何事情。但用git的話,就算你在飛機或者火車上,都可以非常愉快地頻繁提交更新,等到了有網路的時候再上傳到遠端的映象倉庫。換作其他版本控制系統,這麼做幾乎不可能,抑或是非常麻煩。

git具有以下特點:

• git中每個轉殖(clone)的版本庫都是平等的。你可以從任何乙個版本庫的

轉殖來建立屬於你自己的版本庫,同時你的版本庫也可以作為源提供給他人,

只要你願意。

• git的每一次提取操作,實際上都是一次對**倉庫的完整備份。

• 提交完全在本地完成,無須別人給你授權,你的版本庫你作主,並且提交

總是會成功。

• 甚至基於舊版本的改動也可以成功提交,提交會基於舊的版本建立乙個新

的分支。

• git的提交不會被打斷,直到你的工作完全滿意了,push給他人或者他

人pull你的版本庫,合併會發生在pull和push過程中,不能自動解決

的衝突會提示您手工完成。

• 衝突解決不再像是svn一樣的提交競賽,而是在需要的時候才進行合併

和衝突解決。

• git 也可以模擬集中式的工作模式

 git版本庫統一放在伺服器中

 可以為 git 版本庫進行授權:誰能建立版本庫,誰能向版本庫push,誰能夠讀取(轉殖)版本庫

 團隊的成員先將伺服器的版本庫轉殖到本地;並經常的從伺服器的版本庫拉(pull)最新的更新;

 團隊的成員將自己的改動推(push)到伺服器的版本庫中,當其他人和版本庫同步(pull)時,會自動獲取改變

• git 的集中式工作模式非常靈活

 你完全可以在脫離git伺服器所在網路的情況下,如移動辦公/出差時,照常使用**庫

 你只需要在能夠接入git伺服器所在網路時,pull和push即可完成和伺服器同步以及提交

 git提供 rebase 命令,可以讓你的改動看起來是基於最新的**實現的改動

• git 有更多的工作模式可以選擇,遠非 subversion可比

Git 與 SVN的區別(分布式 VS 集中式)

區別 1 git分布式,svn集中式 集中式系統,只有乙個 版本庫,一旦故障,影響全部,成員工作必須依靠網路,但資源集中 分布式系統,成員都可以是 庫,工作不需要網路 2 git只關心檔案資料的整體是否發生變化,而svn則關心檔案內容的變化。例 svn每次記錄有哪些檔案作了更新,及更新了什麼內容。而...

Git 集中式VS分布式

集中式版本控制系統 版本庫是集中存放在 伺服器的,而幹活的時候用的是自己電腦,所以要先從 伺服器取得最新版本,然後開始幹活,幹完再把自己的 活推送給 伺服器。集中式版本控制系統最大的毛病就是必須聯網才能工作。分布式版本控制系統 首先,分布式版本控制系統根本沒有 伺服器 每個人的電腦上都是乙個完整的版...

Git與SVN的區別(集中式VS分布式)

原出處 git是目前世界上最先進的分布式版本控制系統,其實 git 跟 svn一樣有自己的集中式版本庫或伺服器,但是git 更傾向於被使用於分布式模式,也就是每個開發人員從中心版本庫 伺服器上chect out 後會在自己的機器上轉殖乙個跟中心版本庫一模一樣的本地版本庫。可以這樣說,如果你被困在乙個...