閱讀168 返回首頁    go 阿裏雲 go 技術社區[雲棲]


svn與git的區別(總結)

版本控製器的作用:

  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又叫做集中式版本控製器。嚴重的依賴服務器端,當服務器端無法使用的時候,版本控製也就無法再使用了。

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,這時,你們倆之間隻需把各自的修改推送給對方,就可以互相看到對方的修改了。

​為了方便“交換”大家的修改,分布式版本控製係統通常也有一台充當“中央服務器”的電腦,但沒有它大家也一樣幹活,隻是交換修改不方便而已。

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

本文章轉載至新浪博客,原文鏈接https://blog.sina.com.cn/s/blog_14ecbedb80102x0p8.html。

最後更新:2017-07-18 20:34:13

  上一篇:go  泊眾棋牌源碼搭建教程棋牌遊戲源碼下載
  下一篇:go  Bridge to the digital world —— AR算法技術分享