git diff详解

来源:互联网 发布:java使用 编辑:程序博客网 时间:2024/06/13 06:17

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



0 0
原创粉丝点击