一直用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 HEAD