git和svn的區別和優缺點

2021-09-02 22:39:14 字數 2339 閱讀 3024

svn是subversion的簡稱,是乙個開放源**的版本控制系統,支援大多數常見的作業系統。作為乙個開源的版本控制系統,subversion管理著隨時間改變的資料。這些資料放置在乙個**資料檔案庫(repository)中。這個檔案庫很像乙個普通的檔案伺服器,不過它會記住每一次檔案的變動。這樣你就可以把檔案恢復到舊的版本,或是瀏覽檔案的變動歷史。subversion是乙個通用的系統,可用來管理任何型別的檔案,其中包括了程式原始碼。

git(分布式版本控制系統)git是一款免費、開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的專案,git是乙個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的專案版本管理。git 是 linus torvalds 為了幫助管理 linux 核心開發而開發的乙個開放原始碼的版本控制軟體。分布式相比於集中式的最大區別在於開發者可以提交到本地,每個開發者通過轉殖(git clone),在本地機器上拷貝乙個完整的git倉庫.

集中式**管理的核心是伺服器,所有開發者在開始新一天的工作之前必須從伺服器獲取**,然後開發,最後解決衝突,提交。所有的版本資訊都放在伺服器上。如果脫離了伺服器,開發者基本上可以說是無法工作的。

2、進入自己的分支,進行工作,每隔乙個小時向伺服器自己的分支提交一次**(很多人都有這個習慣。因為有時候自己對**改來改去,最後又想還原到前乙個小時的版本,或者看看前乙個小時自己修改了哪些**,就需要這樣做了)。

3、下班時間快到了,把自己的分支合併到伺服器主分支上,一天的工作完成,並反映給伺服器。

git的功能特性:

從一般開發者的角度來看,git有以下功能:

1、從伺服器上轉殖完整的git倉庫(包括**和版本資訊)到單機上。

2、在自己的機器上根據不同的開發目的,建立分支,修改**。

3、在單機上自己建立的分支上提交**。

4、在單機上合併分支。

5、把伺服器上最新版的**fetch下來,然後跟自己的主分支合併。

6、生成補丁(patch),把補丁傳送給主開發者。

7、看主開發者的反饋,如果主開發者發現兩個一般開發者之間有衝突(他們之間可以合作解決的衝突),就會要求他們先解決衝突,然後再由其中乙個人提交。如果主開發者可以自己解決,或者沒有衝突,就通過。

8、一般開發者之間解決衝突的方法,開發者之間可以使用pull 命令解決衝突,解決完衝突之後再向主開發者提交補丁。

從主開發者的角度(假設主開發者不用開發**)看,git有以下功能:

1、檢視郵件或者通過其它方式檢視一般開發者的提交狀態。

2、打上補丁,解決衝突(可以自己解決,也可以要求開發者之間解決以後再重新提交,如果是開源專案,還要決定哪些補丁有用,哪些不用)。

3、向公共伺服器提交結果,然後通知所有開發人員。

.svn屬於集中化的版本控制系統,有個不太精確的比喻:svn = 版本控制+ 備份伺服器,svn使用起來有點像是檔案倉庫的感覺,支援並行讀寫檔案,支援**的版本化管理,功能包括取出、匯入、更新、分支、改名、還原、合併等。

git是乙個分布式版本控制系統,操作命令包括:clone,pull,push,branch ,merge ,push,rebase,git擅長的是程式**的版本化管理。

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

分支在svn中一點不特別,就是版本庫中的另外的乙個目錄。如果你想知道是否合併了乙個分支,你需要手工執行像這樣的命令svn propget svn:mergeinfo,來確認**是否被合併。然而,處理git的分支卻是相當的簡單和有趣。你可以從同乙個工作目錄下快速的在幾個分支間切換。你很容易發現未被合併的分支,你能簡單而快捷的合併這些檔案。

git的內容完整性要優於svn:git的內容儲存使用的是sha-1雜湊演算法。這能確保**內容的完整性,確保在遇到磁碟故障和網路問題時降低對版本庫的破壞。

svn 的優缺點

svn對中文支援好,操作簡單,使用沒有難度,美工人員,產品人員,測試人員,實施人員都可輕鬆上手。使用介面統一,功能完善,操作方便。

git的優缺點

對程式源**進行差異化的版本管理,**庫佔極少的空間。易於**的分支化管理。不支援中文,圖形介面支援差,使用難度大。不易推廣。 但是目前市場git已經基本碾壓svn。

SVN和Git的優缺點

svn的優點 1 採用集中式,易於管理,保證安全性 2 管理方便,邏輯明確,理念符合常規思維 3 的一致性高 4 適合人數不多的專案開發 5 允許乙個檔案有任意多的可命名屬性,會關注所有的檔案型別 6 支援二進位制檔案,更容易處理大檔案 7 支援空目錄。svn的缺點 1 伺服器壓力太大,資料庫容量暴...

Git 和 SVN 的優缺點?

git的優點 適合分布式開發,強調個體 公共的伺服器壓力和數量都不會太大 速度快,成熟的架構,開發靈活 任意兩個開發者之間可以很容易的解決衝突 部署方便,基本上下個命令就可以用 離線工作,管理 成本低,不需要依賴伺服器 良好的分支機制,可以讓主幹 保持乾淨。git的缺點 不符合常規思維 資料少,學習...

SVN和Git的區別,優缺點,使用場景

最核心的區別git是分布式的,而svn不是分布的。2 git把內容按元資料方式儲存,而svn是按檔案 git沒有乙個全域性版本號,而svn有 git的內容的完整性要優於svn 剛開始用時很狗血的一點,svn必須先update才能commit,忘記了合併時就會出現一些錯誤,git還是比較少的出現這種情...