為了讓不同系統上的開發者能夠協同工作,集中化的版本控制系統應運而生(CVCS)。這類系統都有一個單一的集中管理的伺服器,保存所有檔案的修訂版本。而協同工作的人們都通過客戶端連線到這台伺服器,獲取最新的檔案或者提交更新。集中化的版本控制系統,最顯而易見的缺點是中央伺服器的單點故障問題。如果宕機,那么就會出現誰都無法提交更新的情況,那么也就無法協同工作;如果磁碟發生故障,而備份又不夠即時,那么就有丟失數據的風險,最壞的情況是丟失整個項目的歷史更改記錄。因此,分散式版本控制系統問世了(DVCS)。
在分散式版本控制系統中,客戶端不僅僅是只提取最新版本的檔案快照,而是把代碼倉庫完整的鏡像下來。所以每一次提取的操作,都是對代碼倉庫的完整備份,因此也就不必擔心協同工作用的伺服器發生故障。
Git和其他版本控制系統的主要差別在於:Git只關心檔案數據的整體是否發生了變化,而多數的其他系統則只關心檔案內容的具體差異,它們在每個版本中記錄著各個檔案的具體差異。在Git中的絕大多數操作都只需要訪問本地檔案和資源,不需要聯網。這是因為Git在本地磁碟上就保留著所有當前項目的歷史更新,所以處理起來速度飛快,這是使用空間換時間的處理方式。使用Git,即使在沒有網路或VPN的情況下,你同樣可以非常愉快的頻繁提交更新,等到有了網路的時候再提交到遠程的倉庫。