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 命令结果如图

上面的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,分支之间的比较

1,master 分支的README.md 是源文件,testbr 的README.md 是目标文件。

2,源文件是从第2行开始,到其后的4行,目标文件是第2行开始到其后的5行

3,前3行相同,源文件第四行是master ,目标文件第四五行是add line ,testbr

git diff 结果分析的更多相关文章

  1. Git Diff 格式分析

    参考: http://stackoverflow.com/questions/2529441/how-to-read-the-output-from-git-diff https://www.git- ...

  2. Git diff结果显示分析

    1.diff的三种格式: 正常格式(normal diff) 上下文格式(context diff) 合并格式(unified diff) 2.示例文件为了便于讲解,先新建两个示例文件.第一个文件叫做 ...

  3. 实践中的Git常用指令分析

    从工作开始,一直都在使用为知笔记(作为程序员需要知道的内容很多---不需要很深入理解,一段时不使用的东西可能就会忘记).但本周一同步不同PC端时,了解到为知会在2017/1/1开始收费! 既然收费了, ...

  4. git diff比较版本差异(生成补丁)

    1.git diff [<options>] <commit> <commit> options 使用--name-only(git diff HEAD cd504 ...

  5. git diff 命令用法

    理解git diff的前提,首先要理解git中工作区,暂存区,本地版本库的概念,如果头脑中有这些概念,接着往下读. git diff test.c 用来查看工作区和暂存区中test.c文件的区别. g ...

  6. git diff 生成patch, git apply patch 打补丁方法说明,以及分支管理的简单操作。

    git diff 简易操作说明 先git log 查看commit ID, 记录你想要打的补丁的ID 比如说: git log commit 4ff35d800fa62123a28b7bda2a04e ...

  7. Saving the entire git diff between two commits in a text file

    git diff A10..A1 > my.diff 转自: http://stackoverflow.com/questions/19067896/saving-the-entire-git- ...

  8. git diff ^M的消除

    这是由于换行符在不同的操作系统上定义的区别造成的. Windows用CR LF来定义换行,Linux用LF. CR全称是Carriage Return ,或者表示为\r, 意思是回车. LF全称是Li ...

  9. 基于git diff进行的eslint代码检测

    缘起 在项目中, 通常都会使用代码检测工具来规范团队的代码风格, 比如eslint.随着代码的不断增加, eslint进行代码检测的时间也越来越久.每次检测的时候, 需要检测的文件和实际检测的文件极度 ...

随机推荐

  1. Redis 学习之路 (011) - redis 多数据库

    一台服务器上都快开启200个redis实例了,看着就崩溃了.这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开. 那么,redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的 ...

  2. VS code配置go语言开发环境之自定义快捷键及其对应操作

    VS code 配置 自定义快捷键 及其对应操作   由于 vs code 的官方 go 插件不支持像 goland 一样运行当前 go 文件, 只能项目 或者 package 级别地运行, 因此有必 ...

  3. mysql存储过程详解 mysql存储过程和函数

    第20章:存储程序和函数 目录 20.1. 存储程序和授权表 20.2. 存储程序的语法 20.2.1. CREATE PROCEDURE和CREATE FUNCTION 20.2.2. ALTER ...

  4. [elk]bin/elasticsearch-sql-cli使用

    在探sql groupby语句 这个长久不用竟然忘记 part name age dep1 ara 22 dep1 arb 22 dep1 arc 22 dep2 ema 10 dep2 emc 11 ...

  5. ServiceMesh究竟解决什么问题?

    服务网格(ServiceMesh)这两年异常之火,号称是下一代微服务架构,互联网公司经常使用的是微服务分层架构. 随着数据量不断增大,吞吐量不断增加,业务越来越复杂,服务的个数会越来越多,分层会越来越 ...

  6. Python3将ipa包中的文件按大小排序

    [本文出自天外归云的博客园] 给你个ipa包,解压前输出包大小,解压后把里面的文件按大小排序.代码如下: import os import shutil import zipfile _ipa_zip ...

  7. 【资料下载区】【iCore1S相关代码、资料下载地址】更新日期2017/10/09

    [iCore1S相关文档][更新中...] iCore1S原理图(PDF)下载iCore1S引脚注释(PDF)下载 [iCore1S相关例程代码][ARM][更新中...] DEMO1.0测试程序发布 ...

  8. bootstrap的css和html设计规范

    1,css设计规范 http://www.runoob.com/bootstrap/bootstrap-css-codeguide-html.html 2,html设计规范 http://www.ru ...

  9. Direct3D驱动类型(DRIVER_TYPE)介绍

    之前部门老大叫我查找有关Direct3D使用软件渲染的方法,于是我找到了D3D驱动的类型,并整理如下 一.D3D驱动类型的句法 typedef enum D3D_DRIVER_TYPE { D3D_D ...

  10. JavaScript学习历程01

    水仙花数 ps:各位数字立方和等于该数本身 方法1 (数组) <script type="text/javascript"> var i = 100; var newi ...