git diff詳解

一直用git diff,可diff的對象究竟是什麼差異呢?


一、首先我們要知道,git分爲工作區、暫存區、版本庫

git追蹤的是修改,對一個文件,假設做了一次修改a,處理步驟:

1)工作區:修改a

2)git add,此時修改a提交到了暫存區。工作區中無修改內容,我們認爲工作區是“空的”;暫存區中有修改a

3)git commit,此時暫存區的修改a提交到了版本庫中,工作區仍然是“空的”,暫存區也成爲“空”

此時一次修改完成了。


二、diff內容

“git diff”默認對比的是哪些內容呢?

根據我的測試diff內容有優先級,工作區和暫存區的diff優先級最高

用僞代碼描述:

if( 工作區不爲空){
    if(暫存區不爲空) { 
        print:工作區和暫存區差別; 
    }else{
        print:工作區和版本庫的差別; 
    }   
} else {
    if(暫存區不爲空){
        print:暫存區和版本庫的差別; 
    }else{
        無動作; 
    }   
}


指定對比暫存區和版本庫的差別:git diff --cached

指定對比工作區和版本庫的差別:git diff HEAD



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章