Git之版本控制

一、版本控制

目錄:淺談發(fā)展歷史、什么是版本控制、常見版本控制工具、版本控制的分類

1.淺談發(fā)展歷史

同生活中的許多偉大事物一樣,Git誕生于一個極富紛爭大舉創(chuàng)新的年代。
Linux內(nèi)核開源項目有著為數(shù)眾廣的參與者。 絕大多數(shù)的Linux內(nèi)核維護工作都花在了提交補丁和保存歸檔的繁瑣事務(wù)上(1991-2002年間)。 到2002年,整個項目組開始啟用一個專有的分布式版本控制系統(tǒng)BitKeeper來管理和維護代碼。
到了2005年,開發(fā)BitKeeper的商業(yè)公司同Linux內(nèi)核開源社區(qū)的合作關(guān)系結(jié)束,他們收回了Linux內(nèi)核社區(qū)免費使用BitKeeper的權(quán)力。 這就迫使Linux開源社區(qū)(特別是Linux的締造者Linus Torvalds)基于使用BitKeeper時的經(jīng)驗教訓(xùn),開發(fā)出自己的版本系統(tǒng)。 也就是后來的Git。
Git是目前世界上最先進的分布式版本控制系統(tǒng)。
Git是免費的、開源的,最初Git是為輔助Linux內(nèi)核開發(fā)的,用來替代BitKeeper。

2.什么是版本控制

版本控制(Revision control)是一種在開發(fā)的過程中用于管理我們對文件、目錄或工程等內(nèi)容的修改歷史,方便查看更改歷史記錄,備份以便恢復(fù)以前的版本的軟件工程技術(shù)。

  • 實現(xiàn)跨區(qū)域多人協(xié)同開發(fā)
  • 追蹤和記載一個或者多個文件的歷史記錄
  • 組織和保護你的源代碼和文檔
  • 統(tǒng)計工作量
  • 并行開發(fā)、提高開發(fā)效率
  • 跟蹤記錄整個軟件的開發(fā)過程
  • 減輕開發(fā)人員的負擔(dān),節(jié)省時間,同時降低人為錯誤

簡單說就是用于管理多人協(xié)同開發(fā)項目的技術(shù)。
沒有進行版本控制或者版本控制本身缺乏正確的流程管理,在軟件開發(fā)過程中將會引入很多問題,如軟件代碼的一致性、軟件內(nèi)容的冗余、軟件過程的事物性、軟件開發(fā)過程中的并發(fā)性、軟件源代碼的安全性,以及軟件的整合等問題。

3.常見版本控制工具

主流的版本控制器有如下這些:

  • Git
  • SVN(Subversion)
  • CVS(Concurrent Versions System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • Visual Studio Online

版本控制產(chǎn)品非常的多(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault),現(xiàn)在影響力最大且使用最廣泛的是Git與SVN。

Git與SVN最主要的區(qū)別
SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務(wù)器的。然而編寫代碼的時候,使用的是自己的電腦,所以首先要從中央服務(wù)器得到最新的版本,然后再編寫代碼。完成工作后,需要把自己編寫的代碼推送到中央服務(wù)器。集中式版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作,對網(wǎng)絡(luò)帶寬要求較高。
Git是分布式版本控制系統(tǒng),沒有中央服務(wù)器,每個人的電腦就是一個完整的版本庫。編寫代碼的時候不需要聯(lián)網(wǎng)了,因為版本都在自己電腦上。協(xié)同的方法是這樣的:比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
Git是目前世界上最先進的分布式版本控制系統(tǒng)。

4.版本控制的分類

1)本地版本控制
記錄文件每次的更新,可以對每個版本做一個快照,或是記錄補丁文件,適合個人用,如RCS。

本地版本控制流程

2)集中版本控制
所有的版本數(shù)據(jù)都保存在服務(wù)器上,協(xié)同開發(fā)者從服務(wù)器上同步更新或上傳自己的修改。

集中版本控制流程

所有的版本數(shù)據(jù)都存在服務(wù)器上,用戶的本地只有自己以前所同步的版本,如果不連網(wǎng)的話,用戶就看不到歷史版本,也無法切換版本驗證問題,或在不同分支工作。而且,所有數(shù)據(jù)都保存在單一的服務(wù)器上,有很大的風(fēng)險這個服務(wù)器會損壞,這樣就會丟失所有的數(shù)據(jù),當(dāng)然可以定期備份。代表產(chǎn)品:SVN、CVS、VSS。
3)分布式版本控制
所有版本信息倉庫全部同步到本地的每個用戶,這樣就可以在本地查看所有版本歷史,可以離線在本地提交,只需在連網(wǎng)時push到相應(yīng)的服務(wù)器或其他用戶那里。由于每個用戶那里保存的都是所有的版本數(shù)據(jù),只要有一個用戶的設(shè)備沒有問題就可以恢復(fù)所有的數(shù)據(jù),但這增加了本地存儲空間的占用。

分布式版本控制流程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 版本控制 - 基本概念 * 版本庫 * 分布式版本控制 - 常用軟件 * 版本控制軟件 版本庫 典型的客戶/服務(wù)器...
    CJ的技術(shù)日常閱讀 252評論 0 0
  • 版本控制的起源 現(xiàn)在的軟件項目通常是由一個研發(fā)小組共同分析、設(shè)計、編碼、維護以及測試的 針對團隊開發(fā)需要解決以下問...
    極客江南閱讀 3,537評論 3 39
  • 引子 如果要寫一篇論文,會經(jīng)歷初稿、修改版、再次修改版……如果要設(shè)計一張海報,海報初版0510、修改版0511、修...
    牧?xí)砸蒿L(fēng)閱讀 1,509評論 0 1
  • 一、版本控制 版本控制,通過文檔控制記錄各個模塊的改動,并給每次改動添加序號,用于存儲、追蹤目錄和文件的修改歷史。...
    bridgeZ閱讀 423評論 0 6
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 7,536評論 0 4

友情鏈接更多精彩內(nèi)容