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



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