git diff 结果分析

git diff 的5个使用场景:

1.staging area和working area的文件 (无其他参数时)

git diff  

2.master分支和working area的文件 (用master参数)

git diff master 

3.HEAD指向的内容和working area的文件

git diff HEAD 

4.用远程master分支比较当前工作区

git diff refs/remotes/origin/master 

5.经常还要用到master分支的某个文件的历史版本和working area的该文件的比较

git diff 0c5ee16a6a4c849d0ae0448caa8ff174399c7c3c ./socket_helper.cpp 

6.两个分支之间的比较( testbr 分支与 master 分支比较)

git diff master testbr

7 历史记录之间对比

git diff HEAD  HEAD^
git diff HEAD  HEAD^^
git diff 数列号6位即可 数列号6位即可 

上面的命令中, diff后面的参数指的是commit id, ./socket_helper.cpp是要比较的文件路径。


diff的命令输出格式注意:

---代表源文件  
+++代表目标文件  

通常working area的文件都是被当作目标文件来看待。

-开头的行,是只出现在源文件中的行

+开头的行,是只出现在目标文件中的行

空格开头的行,是源文件和目标文件中都出现的行

-差异按照差异小结进行组织,每个差异小结的第一行都是定位语句,由@@开头,@@结尾。


示例分析

staging area 区中的README.md内容如下:

one line
two line 
three line 'there are three line is common part'
four line 'only in staging area'

working area 区中的README.md内容如下:

one line
two line 
three line 'there are three line is common part'
four line 'only in working area'

执行 git diff 命令结果如图
1494427-20181006150811856-601161543.png

上面的diff结果表明

1.暂存区的README.md文件是源文件,当前working area的README.md文件是目标文件。

2.在源文件第1行到其后的第6行和目标文件第1行开始到其后的第7行构成一个差异小结

3.这个差异小结中,目标文件删除了一行 four line 'only in staging area'
添加了一行 four line 'only in working area'

4.前3行空格开头表明没有差异。


示例2,分支之间的比较

1494427-20181006170016700-582663203.png

1,master 分支的README.md 是源文件,testbr 的README.md 是目标文件。
2,源文件是从第2行开始,到其后的4行,目标文件是第2行开始到其后的5行
3,前3行相同,源文件第四行是master ,目标文件第四五行是add line ,testbr

转载于:https://www.cnblogs.com/ims-/p/9747333.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值