評《GIT和SVN之間的五個基本區別》

2021-06-27 17:11:06 字數 3061 閱讀 2041

首先說明,我沒看英文原版,因為就我目前來說,自認為沒這個需要了。好吧,我承認其實是犯懶。。。

1.git

是分布式的,

svn不是

這一點絕對是最最關鍵的重點,與原作者不同,我要特別強調的是這一點對身處大陸的碼農們的重要性。為什麼?因為人家老外下全套

android

原始碼要幾個小時,而我們要十幾二十個小時,甚至好幾天,還會不停斷線!

分布式的最大好處,在於當你要切換不同的提交,不同的分支時,不再需要聯網。試想一下,要是

google

的android

原始碼用svn

(這個是純假設,實際上是完全不可行的,後面會提到),本來在大陸下一次**就夠慢的了,要是每天再切個幾次分支和提交,那就別活了。所以在這一點上,我不說

git完爆

svn,應該說是分布式完爆非分布式。

2.

git把內容按元資料方式儲存,而

svn是按檔案:

說實話,我沒看出來原文列第二點出來是為了說明什麼。這確實是個區別,但一般使用者是不需要了解的。

git還是svn

,都是挺讓人感到頭疼的,兩者對衝突的解決辦法也是差不多的。個人見解,衝突是靠良好的團隊管理和專案分工來盡力避免的,但真發生了,解決起來都差不多,也沒見哪個版本控制系統是以解決衝突效率高作為賣點的。當然不存在衝突的版本管理系統也有,

vss嘛,往前推個

10年,中興全公司都在用呢,呵呵~

3.

git分支和

svn的分支不同:

分支確實是乙個重點,只不過原文沒說到點子上,不過看文章是挺久之前的,可能那時候

git還沒現在這麼普及(當然現在國內也未必有多普及),也情有可原吧。

這裡我就說最關鍵的一點,你可以看完整的

android

**,如果沒有,可以用

git clone

個linux

的完整**庫,然後用

git branch -r

命令看看,你會發現有幾十個甚至近百個分支,如果你只用

svn的話,你一定完全無法想象。但這就是

git分支的優勢,因為

git是基於差異來管理分支的,其分支的代價極小,再結合第一點,所以其切換分支也極為方便和快捷。這一點上我認為

git是優於

svn的,之所以我不說完爆,是因為這一點要結合專案需求,你的專案不是

android

,不是linux

,沒有大量分支並行開發、合併的需求,其實用

svn也是可以的。但用

git,你可以為乙個單獨的小功能拉分支,為一輪完整的測試拉分支,為你的每乙個客戶單獨拉分支,等等等等,基本上是想拉就拉,這一點

svn應該是比不上的。

至於原文提到的合沒合併的問題,

svn我不常用,

git下用

git log

命令,加上

--graph

引數,再配合

--oneline

和--color

,我覺得是很方便直觀的。

4.

git沒有乙個全域性的版本號,而

svn有:

原文承認這一點不如

svn,我也承認,但要補充說明一下,

git每次提交產生的

40位(

160bit

)雜湊值,是完全可以等同於

svn全域性

id的作用的,之所以說不如,只是因為不好記而已。

5.

git的內容完整性要優於

svn:

完整性這一點

git要優於

svn這是事實,雖然我個人不論

git還是

svn,都沒碰到過這類問題。

反正對於

git,每個轉殖都是個完整的庫,只要有乙個轉殖在,伺服器被雷劈了都不怕,有點狡兔三窟的味道。當然,我這裡說的跟原文說的已經不是一回事了。

git鼓勵人們拉分支,這完全就是本末倒置了。事實是,

git在分支這一點上優勢巨大,所以當專案有大量分支的需求時,自然

git就脫穎而出了。這也是為什麼

android

、linux

用不了svn

的原因。至於說

svn的

commit

是一種主動責任,稍微用點腦子想想,可能存在乙個版本控制系統,不需要程式設計師承擔所謂的主動責任麼?無非在

vss裡面,是

checkout/checkin

,在svn

裡面是commit

,git

又把svn

的commit

拆分成了

commit

和push

最後說說

git的不足,結合專案經歷,個人認為最大的是兩點,第一,圖形介面支援差,

git本身是純命令列的,圖形化的介面也從來不是

git的開發目標之一,所以雖然有第三方開發了圖形介面支援,但這始終是

git的短板;第二,

git本身是不支援基於目錄的鑑權認證的,我有碰到過幾個

boss

挺在意這個的,雖然也有外掛程式能解決這個問題,但我沒用過。

git是

linux

之父專門為了

linux

核心原始碼而開發設計的,人家不在意這兩點,也完全可以理解。

選擇版本控制工具,要結合各方面的因素,我反正也見過一群中興出來開公司的老古董,到今天都還在堅持

vss的。我只能說

git是我用下來感覺最方便,功能最強大的(本人開發環境是純

linux

,寫**看**用

vim,工作內容有涉及跨平台,但

vs之類的

ide環境僅僅用來編譯一下而已)。如果你的專案很

「linux」

的話,那我實在找不到不用

git的理由。你只要想一想,天才如

linus

者,會搞出個不如

svn的東西來跟自己過不去麼?

GIT和SVN之間的五個基本區別

果你在讀這篇文章,說明你跟大多數開發者一樣對 git感興趣,如果你還沒有機會來試一試git,我想現在你就要了解它了。git不僅僅是個版本控制系統,它也是個內容管理系統 cms 工作管理系統等。如果你是乙個具有使用svn背景的人,你需要做一定的思想轉換,來適應git提供的一些概念和特徵。所以,這篇文章...

GIT和SVN之間的五個基本區別

如果你在讀這篇文章,說明你跟大多數開發者一樣對git感興趣,如果你還沒有機會來試一試git,我想現在你就要了解它了。git不僅僅是個版本控制系統,它也是個內容管理系統 cms 工作管理系統等。如果你是乙個具有使用svn背景的人,你需要做一定的思想轉換,來適應git提供的一些概念和特徵。所以,這篇文章...

GIT和SVN之間的五個基本區別

如果你在讀這篇文章,說明你跟大多數開發者一樣對git感興趣,如果你還沒有機會來試一試git,我想現在你就要了解它了。git不僅僅是個版本控制系統,它也是個內容管理系統 cms 工作管理系統等。如果你是乙個具有使用svn背景的人,你需要做一定的思想轉換,來適應git提供的一些概念和特徵。所以,這篇文章...