所有除了Git以外的版本控制系統都使用增量儲存方式來儲存不同版本,而Git則在每一個commit時,儲存一個整個檔案的content copy,除非那個檔案沒有做過改動。Git和其他版本系統的主要區別是Git對資料的重新思考。概念上說,所有其他的系統都是以檔案為基礎來儲存資訊。這些系統將資訊視為一整套的檔案以及對這些檔案的修改。
Git並不這樣看待資料。相反,Git將資料視為一系列的mini filesystem的快照。每次你commit,或者在Git中儲存你的專案的狀態,它將你的檔案在那個時刻的狀態做一個快照,並且儲存對那個快照的引用。為了更加高效,如果檔案本身沒有做變更,git並不會重新儲存一份,而僅僅重新引用這個已經儲存過的檔案快照。
Git對資料有如下的認識:
這是一個最根本的區別。Git幾乎將版本控制的方方面面重新思考和踐行。這使得Git更像一個mini filesystem with some incredibly powerful tools built on top of it.
當然,在概念上Git確實每一個commit都會對修改過的檔案做一個整個copy儲存,但是實際上,它也是考慮了delta儲存的好處,只是做法有點不同