版本控制Git與SVN

版本控制器的作用:

  1. 可以協同代碼管理,讓多人開發代碼得以實現。

  2. 迴歸到以前的任何一個時間點的代碼處(好比:開始寫了很多代碼,後面有修改了一些,突然IDE崩潰,但是發現還是以前的代碼更好,這個時候無法回去,這個時候沒有後悔藥喫,但是可以使用版本備份,但是即花費空間和花費時間)。

  3. 由於上面的版本備份造成版本衆多,難於找到正確的版本(SVN有專門的日誌記錄了文件的每一次修改,可以通過查看日誌回到任何一個自己想要的版本)。

  4. 代碼衝突的問題,主要是多人操作同一個文件(團隊開發很常見)。

  5. 可以查看每個人具體的操作,便於出現問題後及時排查(由於某個員工個人失誤造成很大的bug,可以方便的追究責任)。

常見的版本控制器分類

​CVS(90年代開發,版本控制器的鼻祖)、SVN(CVS的接班人)、VSS(微軟產品)、GIT(李納斯開發)

SVN
SVN:代碼控制器(版本控制器),主要是爲了多人協同開發項目,管理代碼。也可以管理個人代碼。也叫程序界的”後悔藥“。

SVN(是subversion的簡稱)是近年來一款基於C/S架構的,非常優秀的版本控制器(可以簡單的理解爲管理代碼的工具,在多人協同開發的時候,尤其重要),與傳統的CVS(90年代左右,一個非常優秀的代碼管理器,是代碼管理器的鼻祖)管理工具類似。

SVN可以隨着時間的推移來管理各種數據,這些數據被放置在一個SVN管理的中央倉庫(所有的代碼的集合)裏面。同時SVN會備份並記錄每個文件每一次的修改更新變動。這樣就開發者就可以迴歸到任何一個時間點的某一箇舊的版本(對於SVN,沒修改一次文件,SVN就會創建一個叫做版本的概念,是從0 開始自增的序列)。當然也可以指定文件的更新歷史記錄(index.php)。

SVN又叫做集中式版本控制器。嚴重的依賴服務器端,當服務器端無法使用的時候,版本控制也就無法再使用了。

GIT​
Git是目前世界上最先進的分佈式版本控制系統(沒有之一)。​當這個系統的任何一個客戶端出現問題的時候,都可以從另外的客戶端(即使服務器掛了)獲取所有的代碼。

SVN與GIT的區別:

1.GIT是分佈式的,而SVN是集中式的

2.GIT把內容按元數據方式存儲,而SVN是按文件:因爲git目錄是處於個人機器上的一個克隆版的版本庫,它擁有中心版本庫上所有的東西,例如標籤,分支,版本記錄等。​

3.GIT分支和SVN的分支不同:svn會發生分支遺漏的情況,而git可以同一個工作目錄下快速的在幾個分支間切換,很容易發現未被合併的分支,簡單而快捷的合併這些文件。

4.GIT沒有一個全局的版本號,而SVN有

5.GIT的內容完整性要優於SVN:GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞。

集中式和分佈式的區別:​

集中式版本控制系統:版本庫是集中存放在中央服務器的,而幹活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給中央服務器。​集中式版本控制系統最大的毛病就是必須聯網才能工作。

​分佈式版本控制系統:分佈式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因爲版本庫就在你自己的電腦上。比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

​爲了方便“交換”大家的修改,分佈式版本控制系統通常也有一臺充當“中央服務器”的電腦,但沒有它大家也一樣幹活,只是交換修改不方便而已。

分佈式版本控制系統的安全性要高很多,因爲每個人電腦裏都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裏複製一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法幹活了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章