首先,git 不僅僅是個版本控制系統,它也是個內容管理系統(cms),工作管理系統等。
如果你一直用的是svn,那你需要做一下思想轉換,來適應 git 提供的一些概念和特徵。
二:分布式版本控制系統 與 集中式版本控制系統 的區別 ?
1: 「版本控制系統」 的區別
git 屬於分布式版本控制系統,svn 屬於集中式版本控制系統。
這是 git 和其它集中式版本控制系統(例如 svn,cvs 等),最核心的區別。這點博文後面也會著重敘述。
2: 「儲存方式」 的區別
git 將內容按元資料方式儲存。
而 svn 是按檔案儲存,所有的資源控制系統都是把檔案的元資訊隱藏在乙個類似 .svn、.cvs 等的資料夾裡。
3: 「分支」 的區別
git 分支和 svn 的分支不同。svn 中的分支一點都不特別,其實它就是版本庫中的另外乙個目錄。
4: 「版本號」 的區別
git 沒有乙個全域性的版本號,而 svn 有。
目前為止這是跟 svn 相比, git 缺少的最大的乙個特徵。
5: 「內容完整性」 的區別
git 的內容完整性要優於 svn。
git 的內容儲存使用的是 sha-1 雜湊演算法,這能確保**內容的完整性。確保在遇到磁碟故障和網路問題時,降低對版本庫的破壞。
1:集中式版本控制系統
工作流程:
集中式的版本庫是集中存放在**伺服器的,我們每個人工作的時候,用的都是自己的電腦,所以要先從**伺服器取得最新的版本,然後開始工作,工作做完了,再把自己做的工作推送給**伺服器。
**伺服器就好比是乙個圖書館,你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館。
如下圖所示:
缺點:集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在區域網內還好,頻寬夠大,速度夠快,可如果在網際網路上,遇到網速慢的話,可能提交乙個只有 10m 的檔案就需要5分鐘,世界上最遙遠的距離就是你做完了工作,但是你提交不上去。
2:分布式版本控制系統
工作流程:
分布式版本控制系統沒有「**伺服器」,每個人的電腦上都是乙個完整的版本庫。
這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有乙個完整的版本庫,那多個人如何協作呢?
比方說你在自己電腦上改了檔案a,你的同事也在他的電腦上改了檔案a,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
優點:和集中式版本控制系統相比,分布式版本控制系統的安全性要高很多。
因為每個人電腦裡都有完整的版本庫,乙個人的電腦壞掉了不要緊,隨便從其他人那裡複製乙個就可以了。而集中式版本控制系統的**伺服器要是出了問題,所有人都沒法幹活了。
實際開發工作流程:
在實際使用分布式版本控制系統的時候,很少在兩人之間的電腦上推送版本庫的修改。
因為可能你們倆不在乙個區域網內,兩台電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。
因此,分布式版本控制系統通常也有一台充當「**伺服器」的電腦,但這個伺服器的作用僅僅是用來方便「交換」大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。
當然,git的優勢不單是不必聯網這麼簡單,後面我們還會看到git極其強大的分支管理,把svn等集中式版本控制系統遠遠拋在了後面。
No 1 Git Git與SVN的區別
最核心的區別 svn,cvs等是集中式開發,只有遠端 倉庫伺服器。git不但遠端 倉庫伺服器,而且還有自己本地的 倉庫管理。git更傾向於被使用於分布式模式,也就是每個開發人員從中心版本庫 伺服器上chect out 後會在自己的機器上轉殖乙個自己的版本庫。因為每乙個開發人員的電腦上都有乙個loca...
Svn與Git的區別
這篇主要是談談兩者的區別,至於誰優誰劣看官自己思考吧!把第一條理解到位思想到位了做起來才會有的放矢,其他幾條都是用的時候才能體會到 1 最核心的區別git是分布式的,而svn不是分布的。能理解這點,上手會很容易,宣告一點git並不是目前唯一的分布式版本控制系統,還有比如mercurial等,所以說它...
Svn與Git的區別
1 最核心的區別git是分布式的,而svn不是分布的。能理解這點,上手會很容易,宣告一點git並不是目前唯一的分布式版本控制系統,還有比如mercurial等,所以說它們差不許多。話說回來git跟svn一樣有自己的集中式版本庫和server端,但git更傾向於分布式開發,因為每乙個開發人員的電腦上都...