g4e基礎篇#2 Git分散式版本控制系統的優勢

北京的201個藍天發表於2018-01-05

g4e 是 Git for Enterprise Developer的簡寫,這個系列文章會統一使用g4e作為標識,便於大家檢視和搜尋。

章節目錄

前言

1. 基礎篇:

Git是當前最棒的版本控制系統,已經迅速成為了事實的業界標準,以下是Stackoverflow網站在過去幾年中針對版本控制系統使用情況的統計,你可以明顯看出Git所佔的絕對領導位置。

git-stats

具體資料請參考:

• https://insights.stackoverflow.com/survey/2015
• https://insights.stackoverflow.com/survey/2017

Git和其他版本管理系統最大的區別在於它是一種分散式的版本管理系統(DVCS),這主要是針對類似SVN, TFVC或者ClearCase這種集中式版本管理系統(CVCS)而言的。簡單來說,每個Git儲存庫都是一份完整的程式碼,歷史記錄以及分支的集合,而CVCS系統只在伺服器上儲存所有這些資訊,而在本地一般只有當前版本和至多一個歷史版本。這種能力賦予了開發人員非常靈活的工作方式,因為分支/查詢歷史/比較/合併等操作都不需要通過伺服器進行,就可以更為輕鬆的離線工作或者遠端工作;同時在連線到網路的時候又可以和其他人共享程式碼。

Git 的靈活性和使用者接受度使之成為任何團隊的首選。 現在,許多開發者和大學畢業生都已知道如何使用 Git。Git 的使用者社群中已有許多資源可用來培訓開發者,同時 Git 的使用者接受度使得使用者可以在需要時輕鬆獲得幫助。 幾乎所有的開發工具和技術棧都支援 Git,Git 命令列工具可以在所有主要作業系統上執行。對於企業來說,如果不使用Git會讓那些新入職的開發者感到非常不適應,並且大幅度降低他們的開發效率,我曾將見到過開發者因為應聘企業使用老舊的開發工具而拒絕接受企業的Offer。

Git的一些基本概念

提交 (commit)

commit

每當通過git儲存修改時,Git 會建立一個提交 (commit)。 提交就是在某一個時間點所有檔案改動的快照。 如果在下一個提交中檔案沒有變化,Git 會使用之前儲存的檔案。 每一個提交都針對前一個提交儲存一個連結,這種連結關係形成了一個開發歷史的資料鏈路。

這種連結關係讓我們可以將程式碼還原為以前的提交、檢查兩個提交的檔案變化,並能檢視何時在哪裡進行了更改等資訊。 每個提交在 Git 中都有一個唯一的標識 (commit id),這個id是通過對提交的內容執行加密雜湊演算法得出的。 由於一切都已經過雜湊處理,因此 Git 一定可以檢測到更改、資訊丟失或檔案損壞。

分支(branch)

branch

Git分支與傳統版本管理系統不同,並不會在檔案系統中建立重複的檔案,而是通過修改當前檔案所指向的具體版本(commit id)來實現的,所以你不必切換資料夾就可以所以切換到任何分支上工作。

檔案和提交狀態

file-states

Git 中的檔案有以下三種狀態:已修改(modified)、已暫存(staged)或已提交(committed)。 首次修改檔案時,更改只存在於工作目錄中。 這些更改還不屬於提交或開發歷史記錄。 必須暫存(stage)要包含在提交中的已更改檔案(可以省略其中某些檔案)才能將改動提交到Git。 暫存區域包含下一個提交將包含的所有更改。 對暫存檔案感到滿意後,你就可以提交(commit)這些檔案,併為提交新增描述資訊。 這個提交就成為開發歷史記錄的一部分了。

Git的優勢

並行開發

每個人都有自己的程式碼本地副本,可以同時在自己的分支上工作。 你也可以離線使用 Git,因為幾乎所有操作都是在本地執行。

加快釋出速度

藉助分支,可以靈活地進行同步開發。 主分支(master)作為釋出版本的穩定程式碼。 功能分支(feature branch)包含正在進行的工作,完成後將合併到主分支中。 通過將主分支與正在進行的開發分隔開來,可以更好地管理穩定程式碼,並更為高效安全的釋出程式碼。

內建整合

因為 Git 使用者接受度非常高,它已被整合到大多數工具和產品中。 所有主流的 IDE 都內建有 Git 支援,還有很多工具提供了與 Git 整合的持續整合、持續部署、自動測試、工作項跟蹤、指標和報表功能。 這種整合簡化了日常工作流,降低了企業開發中工具二次開發,整合和定製的需求。

強大的社群支援

Git 作為開放原始碼管理系統,已經成為版本控制系統的業界標準,為團隊提供所需的一切工具和資源。 相比其他版本控制系統,Git 的社群支援非常強大,你可以在需要時輕鬆獲得幫助。

Git適用於團隊協作

將 Git 與其他工具配合使用,可以鼓勵團隊協作、同時確保策略的實行、實現自動化,並能提高工作的可見性和可跟蹤性,從而提高團隊的工作效率。 你可以單獨選擇不同的版本控制系統、工作項跟蹤系統以及持續整合和部署工具。 也可以選擇 Visual Studio Team Services / Team Foundation Server 作為端到端的管理工具,團隊具備非常高的自主性和靈活性。

Git結合拉取請求(Pull Request)

使用拉取請求可以確保程式碼檢視過程的有效,然後再將它們合併到主分支中。 在拉取請求中進行的討論非常有價值,可確保程式碼質量並促進團隊成員相互學習和協作。 Visual Studio Team Services / Team Foundation Server  提供了非常棒的拉取請求體驗,你可以瀏覽檔案更改、發表意見、檢查提交、檢視生成,並能通過社交化投票來批准程式碼合併。

分支策略

分支策略是 Visual Studio Team Services / Team Foundation Server中提供一項有效保持主分支(master)程式碼質量的策略機制,讓團隊可以通過配置靈活的策略實現對主分支的保護,比如:不允許直接向主分支提交程式碼,必須經過程式碼檢視才能合併,必須經過特定人員批准才能合併,必須解決所有程式碼檢視意見才能合併等一系列非常有效的保護手段;同時也允許你自己定製更加複雜的策略規則來適配團隊的不同訴求。

小結

到這裡,我們對Git的基本工作原理和它的優勢具備了一些瞭解。下一章中我們將開始搭建Git操作環境。


 相關文章:


請關注微信公眾號 【devopshub】,獲取更多關於DevOps研發運維一體化的資訊

qrcode_for_gh_b7c158df1fd1_430

相關文章