痞子衡嵌入式:備受開源社群推崇的分散式版本控制工具(Git)

痞子衡發表於2016-12-02

  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是分散式版本控制工具Git

1.為什麼需要版本控制系統?

  單人軟體專案開發過程,往往很多功能都是逐步增加的,在程式碼開發過程中,有的時候功能並不是單向遞增的,中途可能會經過不斷地優化設計與修改,而修改的過程中有時會出現誤操作導致功能缺陷,當時並沒有及時發現,等出問題時,這時候免不了要回過頭來查詢問題,定位問題最常用的辦法就是檢視自己曾經到底修改了哪裡,此時便涉及到一個概念叫“版本控制”,顯然我們需要一個工具能記錄開發過程中的所有版本,並能夠在需要的時候能切換到任意指定的版本。

  隨著軟體專案規模越來越大,多人協作開發已成為不可避免的趨勢,每個成員都在本地修改,新增,刪除專案裡的功能,當把每個人的工作彙總起來時,麻煩就出現了,到底是改了哪些功能?功能裡的哪些細節被修改了?功能的修改出現衝突怎麼辦?此時功能彙總合併工作便變得非常低效,彙總完成後還需要再將程式碼同步到每個專案成員本地。此時便涉及到另外一個概念叫“版本庫”,版本庫就是一個有著自定義資料結構的倉庫,進入倉庫的東西都按照統一結構存放著,版本庫用來記錄整個專案的功能是如何一步步演化的。顯然版本庫使得團隊協同開發變得簡單。

  總結一下,版本控制系統=版本庫+版本管理工具。版本控制系統使得專案開發變得更加高效。

2.版本控制系統Git由來

  版本控制系統有很多,比如CVS、SVN、Mercurial、Git,其中Git是一個概念非常先進的完全分散式版本控制系統。

  Git誕生2005年,其創始人叫Linus Torvalds,什麼?沒聽到這位仁兄?如果你知道Linux系統的話,沒錯,這位仁兄也是Linux核心發明人。

  Git設計的初衷是為了管理Linux系統原始碼,Linus於1991年建立了開源的Linux,世界各地Linux社群的人都在為Linux編寫程式碼,那Linux的程式碼是如何管理的呢?實際上,在2002年之前,Linux程式碼合併工作完全是Linus手工完成的。到了2002年,Linux程式碼庫之大讓Linus很難繼續通過手工方式管理了,Linus迫於壓力只得選擇一款叫BitKeeper的商業版本控制系統,到了2005年,Linux社群有人試圖破解BitKeeper協議,但被BitMover公司及時發現了,BitMover一怒之下收回了Linux社群使用權。於是Linus花了兩週時間用C寫了一個分散式版本控制系統,這便是Git!之後一個月,Linux系統的原始碼開始由Git管理了!

  自那以後,Git迅速成為最流行的分散式版本控制系統,尤其是2008年,GitHub網站上線了,它為開源專案免費提供Git儲存,無數開源專案開始遷移至GitHub,包括jQuery,PHP,Ruby等等。

3.Git主要有哪些特點?

  Git是一款免費的、開源的、分散式的版本控制系統。Git主要有以下4大特點:

  • 速度極快:Git在本地儲存著所有當前專案的歷史更新,所以處理起來速度飛快。
  • 省心可靠:Git可以時刻保持資料完整性,多數操作僅是新增資料,一旦提交快照之後就完全不用擔心丟失資料。
  • 離線工作:Git近乎所有操作都是本地執行,絕大多數操作都只需要訪問本地檔案和資源,不用連網。
  • 資源豐富:越來越多的公司,開源專案使用Git,包括Ruby On Rails,jQuery,Perl,Debian,Linux Kernel等等。擁有一個強大的社群是很大的優勢,有很多教程、工具。

4.三種常見的Git開發流程

  Git是分散式管理方式,它與集中式管理方式最大的區別是Git支援本地提交,因為每個開發者本地都有伺服器的完整資料庫。當需要將本地提交同步到公共伺服器上的資料庫時,就出現了以下三種開發模式來規範這種同步行為。

  第一種模式叫平等合作模式,這種模式下沒有明確的專案負責人,每個人對專案的控制權平等。每個開發都可以對專案進行任意修改。

痞子衡嵌入式:備受開源社群推崇的分散式版本控制工具(Git)

  第二種模式叫經典開發模式,這種模式下明確了一個專案負責人,由這個負責人彙總所有開發人員的提交,並負責對專案進行統一修改。

痞子衡嵌入式:備受開源社群推崇的分散式版本控制工具(Git)

  第三種模式叫超大專案模式,這種模式下有二級經典開發模式,即將專案分成多個子模組,每個子模組均有自己的公共伺服器,每個子模組的開發使用經典開發模式,而子模組的彙總也是經典開發模式。

痞子衡嵌入式:備受開源社群推崇的分散式版本控制工具(Git)

  Git的世界還有很多好玩的東西,具體我們下篇再說。

  至此,分散式版本控制工具Git基本知識痞子衡便介紹完畢了,掌聲在哪裡~~~

參考資料

[1]. Git簡介

[2]. Git淺顯易懂教程

[3]. 遷移到Git的八個理由

[4]. Git的主要特點

[5]. git使用簡介

相關文章