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