Spring 指南(瞭解Git)
瞭解Git
Git 是一個免費開源的分散式版本控制系統(DVCS),它旨在快速、高效地處理任何規模和範圍的專案。
Git是由Linux 建立者Linus Torvalds 發明的,用於支援龐大的、不同的Linux開發人員群體,但Git的受歡迎程度與http://github.com 關係更緊密,Git已存在多年,但直到GitHub受歡迎程度激增之後,才在Linux社群之外獲得廣泛認可。GitHub允許你免費託管開源專案,它還提供簡單的鉤子和友好的使用者體驗,使Git更容易使用。
Mac Homebrew 等其他專案也對Git投入很深,Homebrew允許你在Mac上安裝開源軟體包,構建和管理這些公式的工具利用了Git,用於差異工具、製作補丁、管理資源,以及通過拉取請求 提交新的和更新的包。
Git與其他DVCS
另外兩個最受歡迎的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這樣的更改,但它有一個不同的名稱。
Git與非分散式SCM
幾個非分散式原始碼管理系統(SCM)早於DVCS並仍在使用中:
- Subversion
- CVS(併發版本系統)
許多專有版本控制系統目前仍在大量使用,例如:
- Rational ClearCase
- Perforce
- Visual SourceSafe
這些專有產品通常與其他軟體開發工具捆綁在一起,因此在某些軟體開發商店中根深蒂固。
與DVCS模型相反,這些系統中的關鍵因素是它們依賴中央伺服器來儲存跟蹤版本和分支所涉及的所有關鍵資料,從本質上講,開發人員在家中進行多次提交,與此中央伺服器斷開連線,然後將其新增到伺服器,這不是內建功能,其中一些系統增加了支援此類功能的特性,但它並不是其本質的核心部分。
為了說明DVCS和非DVCS的SCM系統之間的區別,請考慮兩個人如何分別獨立工作,在使用DVCS時如何在某個遙遠的地方會面,比如在遊輪旅行中,並共享提交。共享提交將具有與中央伺服器上相同的許可權,使用非分散式SCM時,這兩個人只能共享程式碼差異,而不能提交,為了使提交成為正式提交,必須在到家並訪問中央伺服器時將提交發布到中央伺服器。
DVCS的固有優勢
像Git這樣的工具的內建優勢在於每個擁有副本的人都擁有重建專案所需的一切,如果中央伺服器崩潰且所有資料都丟失,則可以將任何遠端副本指定為正式副本,因為它將具有足夠的資訊以繼續,如果開發人員沒有最新的提交,則會出現唯一的差異。