Git是一個免費開源的分佈式版本控制系統(DVCS),它旨在快速、高效地處理任何規模和範圍的項目。linux
Git是由Linux建立者Linus Torvalds發明的,用於支持龐大的、不一樣的Linux開發人員羣體,但Git的受歡迎程度與http://github.com關係更緊密,Git已存在多年,但直到GitHub受歡迎程度激增以後,纔在Linux社區以外得到普遍承認。GitHub容許你免費託管開源項目,它還提供簡單的鉤子和友好的用戶體驗,使Git更容易使用。git
Mac Homebrew等其餘項目也對Git投入很深,Homebrew容許你在Mac上安裝開源軟件包,構建和管理這些公式的工具利用了Git,用於差別工具、製做補丁、管理資源,以及經過拉取請求提交新的和更新的包。github
另外兩個最受歡迎的DVCS選擇是Mercurial和Bazaar,Mercurial有命令行工具hg
(以汞的化學符號命名),而Bazaar的命令行工具是bzr
。服務器
Mercurial與許多開源項目相關聯,Ubuntu Linux背後的Canonical公司使用Bazaar,開發人員一般須要熟悉Git、Mercurial和Bazaar。併發
開發人員使用的DVCS一般由開發人員參與的組織決定,而不是由給定的一組功能決定,Git、Mercurial和Bazaar都具備基本功能,例如分支、標籤、合併以及不依賴於中央服務器,目前使用Git的開發人員可能會在一年後在Mercurial管理的另外一個項目開始工做。分佈式
關鍵的挑戰是瞭解每一個工具的命令和語言的差別,例如,Mercurial中的hg revert
意味着回滾當前更改,恢復爲正式版本。git revert
意味着添加一個反轉先前編輯的新提交,Git有一個命令來支持像Mercurial這樣的更改,但它有一個不一樣的名稱。工具
幾個非分佈式源代碼管理系統(SCM)早於DVCS並仍在使用中:開發工具
許多專有版本控制系統目前仍在大量使用,例如:命令行
這些專有產品一般與其餘軟件開發工具捆綁在一塊兒,所以在某些軟件開發商店中根深蒂固。版本控制
與DVCS模型相反,這些系統中的關鍵因素是它們依賴中央服務器來保存跟蹤版本和分支所涉及的全部關鍵數據,從本質上講,開發人員在家中進行屢次提交,與此中央服務器斷開鏈接,而後將其添加到服務器,這不是內置功能,其中一些系統增長了支持此類功能的特性,但它並非其本質的核心部分。
爲了說明DVCS和非DVCS的SCM系統之間的區別,請考慮兩我的如何分別獨立工做,在使用DVCS時如何在某個遙遠的地方會面,好比在遊輪旅行中,並共享提交。共享提交將具備與中央服務器上相同的權限,使用非分佈式SCM時,這兩我的只能共享代碼差別,而不能提交,爲了使提交成爲正式提交,必須在到家並訪問中央服務器時將提交發布到中央服務器。
像Git這樣的工具的內置優點在於每一個擁有副本的人都擁有重建項目所需的一切,若是中央服務器崩潰且全部數據都丟失,則能夠將任何遠程副本指定爲正式副本,由於它將具備足夠的信息以繼續,若是開發人員沒有最新的提交,則會出現惟一的差別。