直接快照,而非比較差別Git
與其餘版本控制系統的主要差異在於:Git
:只關心文件數據的總體是否發生變化SVN
:只關心文件內容的具體差別(如:那些文件更新了,都更新了哪些行的什麼內容)git
Git
每次提交更新時會縱覽一遍全部文件的指紋信息並對文件做一快照,而後保存一個指向此次快照的索引。算法
SVN
:
數據庫
近乎全部操做均可本地執行Git
:絕大多數操做只須要訪問本地文件和資源SVN
:差很少全部操做都須要聯網安全
Git
由本地數據庫,能夠直接讀取本地數據庫進行展現。
若是要查看差別,Git
會取出一個月前的快照和當前文件作一次差別計算,沒必要從新請求遠程服務器。服務器
時刻保持數據完整性spa
在保存前,Git
都要進行內容的校驗和計算,並將結果做爲數據的惟一標識和索引。Git
使用SHA-1
算法計算校驗和,經過對文件的內容或目錄計算出SHA-1
哈希值,做爲支付字符串:版本控制
24b9da6552252987aa493b52f8696cd6d3b00373code
實際上,全部保存在Git數據庫的東西都是用此哈希值作索引,而不是靠文件名。索引
多數操做僅添加數據
一旦提交快照後就徹底不用擔憂丟失數據,特別是在養成了按期推送至其餘鏡像倉庫的習慣的話。圖片
三種狀態
文件流轉的工做區域:
基本的Git工做流程: