2 回答

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
1,未被跟蹤的文件(untracked file)
2,已被跟蹤的文件(tracked file)
2.1,被修改但未被暫存的文件(changed but not updated或modified)
2.2,已暫存可以被提交的文件(changes to be committed 或staged)
2.3,自上次提交以來,未修改的文件(clean 或 unmodified)
Git把它所管理的所有對象(blob,tree,commit,tag……),全部根據(jù)它們的內(nèi)容生成SHA1哈希串值作為對象名;根據(jù)目前的數(shù)學(xué)知識,如果兩塊數(shù)據(jù)的SHA1哈希串值相等,那么我們就可以認(rèn)為這兩塊數(shù)據(jù)是相同的。這樣會(huì)帶來的幾個(gè)好處:
1,Git只要比較對象名,就可以很快的判斷兩個(gè)對象的內(nèi)容是否相同。
2,因?yàn)樵诿總€(gè)倉庫(repository)的“對象名”的計(jì)算方法都完全一樣,如果同樣的內(nèi)容存在兩個(gè)不同的倉庫中,就會(huì)存在相同的“對象名”。
3,Git還可以通過檢查對象內(nèi)容的SHA1的哈希值和“對象名”是否匹配,來判斷對象內(nèi)容是否正確。
4,根據(jù)上面的原則:Git確實(shí)根據(jù)內(nèi)容來生成名字的,而且同名(SHA1哈希串值)肯定會(huì)有相同內(nèi)容,但是提交對象(commit)和其它對象有點(diǎn)不一樣,它里面會(huì)多一個(gè)時(shí)間戳(timestamp),所以在不同的時(shí)間生成的提交對象,即使內(nèi)容完全一樣其名字也不會(huì)相同。
- 2 回答
- 0 關(guān)注
- 952 瀏覽
添加回答
舉報(bào)