版本控制:集中式(SVN) vs 分布式(GIT)

Linus一直痛恨的CVS及SVN都是集中式的版本控制系統,而Git是分布式版本控制系統,集中式和分布式版本控制系統有什么區別呢?

先說集中式版本控制系統,版本庫是集中存放在中央服務器的,而干活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務器。中央服務器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然后回到家自己改,改完了,再放回圖書館。

central-repo

集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在局域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,遇到網速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。

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

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

在實際使用分布式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個局域網內,兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分布式版本控制系統通常也有一臺充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。

distributed-repo

當然,Git的優勢不單是不必聯網這么簡單,后面我們還會看到Git極其強大的分支管理,把SVN等遠遠拋在了后面。

CVS作為最早的開源而且免費的集中式版本控制系統,直到現在還有不少人在用。由于CVS自身設計的問題,會造成提交文件不完整,版本庫莫名其妙損壞的情況。同樣是開源而且免費的SVN修正了CVS的一些穩定性問題,是目前用得最多的集中式版本庫控制系統。

除了免費的外,還有收費的集中式版本控制系統,比如IBM的ClearCase(以前是Rational公司的,被IBM收購了),特點是安裝比Windows還大,運行比蝸牛還慢,能用ClearCase的一般是世界500強,他們有個共同的特點是財大氣粗,或者人傻錢多。

微軟自己也有一個集中式版本控制系統叫VSS,集成在Visual Studio中。由于其反人類的設計,連微軟自己都不好意思用了。

分布式版本控制系統除了Git以及促使Git誕生的BitKeeper外,還有類似Git的Mercurial和Bazaar等。這些分布式版本控制系統各有特點,但最快、最簡單也最流行的依然是Git!

?

?

總結:

1. 主要區別:對歷史版本維護的位置

Git本地倉庫包含代碼庫還有歷史庫,在本地的環境開發就可以記錄歷史。 而SVN的歷史庫存在于中央倉庫,每次對比與提交代碼都必須連接到中央倉庫才能進行。

Git 好處在于: 1)自己可以在脫機環境查看開發的版本歷史 。2)多人開發時如果充當中央倉庫的Git倉庫掛了,任何一個開發者的倉庫都可以作為中央倉庫進行服務。

開發者倉庫一般不直接充當中央庫,但可以隨時創建一個新的中央庫然后同步就立刻恢復了中央庫。

?

?

2. Git 每一次 commit 是提交到本機的服務器,這個不需要聯網。版本管理,就是要方便知道每一個版本,比如回到之前的某個版本,而且回退到某個之前的版本,也是從本機的服務器拿的數據,這些都不需要聯網。

而 SVN 的每一次 commit 都需要聯網,這就需要網絡的等待。 Git只有在Push、pull 的時候需要聯網,而我們平時更多的操作應是commit。

?

斷網情況下,SVN也能工作,但是由于沒有版本控制的記錄,當多人修改后就比較難以快速的合并。但是Git都在本地保存了版本記錄,所以大家合并起來就方便得多了。

?

?

轉自:

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374027586935cf69c53637d8458c9aec27dd546a6cd6000

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448701.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448701.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448701.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Knative 核心概念介紹:Build、Serving 和 Eventing 三大核心組件

為什么80%的碼農都做不了架構師?>>> 作者| 阿里云智能事業群高級開發工程師 元毅 Knative 主要由 Build、Serving 和 Eventing 三大核心組件構成。Knative 正是依靠這三個核心組件,驅動著 Knative 這艘 Serverless 巨輪前行。下面讓我們來分…

樹莓派基金會來號召用鍵盤生物學家研究企鵝

倫敦動物學會(Zoological Society of London)于2014年,與伍茲霍爾海洋研究所和牛津大學等組織合作監控企鵝的計劃Penguin Lifelines有了新進展,倫敦動物學會現與其他動物保護組織合作Penguin Watch項目,邀請民眾在網上…

BlockingCollectionT 類實現 列隊操作

官方文檔 為實現 IProducerConsumerCollection<T> 的線程安全集合提供阻塞和限制功能。 通過 BlockingCollection<T> 實現列隊調用函數 建立全局變量 BlockingCollection<string> blockingCollection new BlockingCollection<string>(); 建立調用函數…

Git 版本回退

現在&#xff0c;你已經學會了修改文件&#xff0c;然后把修改提交到Git版本庫&#xff0c;現在&#xff0c;再練習一次&#xff0c;修改readme.txt文件如下&#xff1a; Git is a distributed version control system. Git is free software distributed under the GPL.然后嘗…

AMD院士站臺 異構計算與OpenCL編程師資培訓首站清華開講

摘要&#xff1a;2013年10月14日&#xff0c;“2013年異構計算與OpenCL編程師資培訓”在清華大學召開。本活動邀請到AMD、Khronos Group及清華大學的多位并行計算領域專家&#xff0c;與參會者共同探討OpenCL異構開發和優化技術。 2013年10月14日&#xff0c;由教育部科技發展…

【問題記錄】RIDE-1.7.3.1控制臺及日志中文亂碼處理

RIDE-1.7.3.1運行結果界面展示: 解決方法參考鏈接&#xff1a; https://blog.csdn.net/panda62/article/details/88535376 轉載于:https://www.cnblogs.com/quietCorner/p/11046656.html

GPU Saturday技術沙龍:OpenCL程序員眼中的下一代APU架構

摘要&#xff1a;GPU Saturday技術沙龍在北京3WCoffee成功舉辦。本次活動邀請AMD資深技術人員及清華大學項目研究員就AMD最新的GCN架構、GPU加速計算在挖掘比特幣、典型圖像算法、深度神經網絡算法等領域的分析與應用展開深入討論。 [CSDN報道] 9月5日&#xff0c;GPU Saturda…

直接取出 post 請求中的 json、得請求體參數、查看 post 請求參數

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 方法如下&#xff1a; try{ServletRequestAttributes requestAttributes (ServletRequestAttributes) RequestContextHolder.getReques…

SparkSQL調優

1、執行計劃&#xff08;過往記憶https://www.iteblog.com/archives/2562.html&#xff09; df.explain(true)//顯示邏輯計劃和物理計劃&#xff0c;不加true只顯示物理計劃 2、邏輯計劃優化方法&#xff1a; 謂詞下推&#xff0c;列裁剪&#xff0c;常量替換&#xff0c;常量累…

AMD發布APPML源碼,構建clMath庫

摘要&#xff1a;日前&#xff0c;AMD將加速并行處理數學庫&#xff08;Accelerated Parallel Processing Math Library簡稱APPML&#xff09;開源&#xff0c;內容包含了BLAS和FFT的OpenCL實現&#xff0c;項目托管在GitHub上&#xff0c;命名為clMath&#xff0c;該項目基于A…

最簡單的 post 請求發起方式、調用其它系統接口

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 調用其它系統接口&#xff0c;發起一個 post 請求&#xff0c;寫法如下&#xff1a; import cn.com.infinitus.yunxiao.jira.vo.EpicV…

CSS基礎學習 18.CSS多列

四種常見的瀏覽器內核&#xff1a; 轉載于:https://www.cnblogs.com/songsongblue/p/11050210.html

BGP

BGP&#xff1a;border gateway protocol 邊界網關路由協議 路由協議分類&#xff1a;內部網關路由協議IGP&#xff1a;rip ospf isis &#xff08;eigrp&#xff09;外部 網關路由協議EGP&#xff1a;EGP&#xff08;早期淘汰&#xff09; BGP BGP特點&#xff1a;1、針對大型…

OpenCL 2.0發布,帶來更強悍的異構計算能力

摘要&#xff1a;Khronos Group本周一發布了OpenCL 2.0&#xff0c;可為顯示芯片提供更好的獨立性&#xff0c;以便能為通用軟件計算出更大的力。該組織已經發布了2.0的臨時標準&#xff0c;預計正式版本的發布要等到6個月以后。 Khronos小組于本周一&#xff08;7月22日&…

從一個OutOfMemoryError 學會了分析Java內存泄漏問題

從一個OutOfMemoryError 學會了分析Java內存泄漏問題 以前都是好好的&#xff0c;最近出現了 oom。 問題 開始是&#xff1a; java.lang.OutOfMemoryError: Java heap space 2019-06-14 11:02:41.678 ERROR 13789 --- [nio-8082-exec-3] c.e.p.s.c.c.core.ELDictionaryControll…

Ubuntu安裝php7.2

1、使用ppa增加源apt-get install python-software-propertiesapt-get install software-properties-commonadd-apt-repository ppa:ondrej/php2、更新apt-get update3、查看源中PHP7.2版本apt list | grep php 列表中已經包含你想要的PHP版本了4、安裝PHP7.2apt-get -y …

會出現 unreachable statement 的可能

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 java編譯器把unreachable statement標記為運行時錯誤&#xff0c;一個unreachable statement就是編譯器決定永遠不會執行它。 下面的幾…

Hadoop+GPU強強聯手的性能探索

摘要&#xff1a;Hadoop并行處理可以成倍地提高性能&#xff0c;GPU也日益成為計算任務的重要分擔者&#xff0c;Altoros Systems研發團隊一直致力于探索HadoopGPU的可能性&#xff0c;以及在實際的大規模系統中的實現&#xff0c;這篇文章就是他們的部分研究成果。 Hadoop并行…

Vue Google瀏覽器插件 Vue Devtools無法使用的解決辦法

1.插件安裝不必多說 一定要用Vue.js 開發版 Vue.min.js 在控制面板就不會顯示 2.本地調試 用的是file://協議 修改插件允許訪問文件網址 打上對勾 轉載于:https://www.cnblogs.com/116970u/p/11052987.html

JVM原理探究及調優方法論

1 此文目的 本文不準備從盤古開天地開始講述JVM的種種&#xff0c;相關的文章網上太多了&#xff0c;大多也無非轉來轉去&#xff0c;連圖都差不多。筆者只整理個提綱挈領的學習路線指南&#xff0c;并對自己學習過程中遇到的坑和容易混淆和忽視的地方作個總結。 2 JVM內存模型…