diff

最原始的 diff

我们先编写两个文件:

f1:

1
2
3
4
5
6
7
8
9

f2:

1
2
3
4
5
66
7
8
9

然后我们进行比较:

diff f1 f2
6c6
< 6
---
> 66
  1. 第一部分 6c6:表示变动的位置

    • 第一个 6 表示文件 f1 的第 6 行有变化
    • c 表示变动模式是 change(变更)。除了 change 外,变动模式还有 add(新增)和 delete(删除)
    • 第二个 6 表示变动后变成 f2 的第 6 行
  2. 第二行 < 6 和 f1 相关。< 表示要从 f1 当中去除该行,后面的 6 表示该行的内容

  3. 第三行 --- 用来分割 f1 和 f2 的内容

  4. 第四行 > 66 和 f2 相关。> 表示 f2 增加了该行,后面的 66 表示该行的内容

context diff

显示上下文模式的 diff

上下文各显示 3 行

diff -c f1 f2
*** f1	Mon Mar 11 21:05:01 2024
--- f2 Mon Mar 11 21:04:56 2024
***************
*** 3,9 ****
3
4
5
! 6
7
8
9
--- 3,9 ----
3
4
5
! 66
7
8
9
  1. 第一部分 *** f1 Mon Mar 11 21:05:01 2024:文件名和时间

    • *** 表示变动前的文件
    • --- 表示变动后的文件
  2. 第三行的星号 *************** 是分隔符
  3. 分隔符下的第二部分第一段:
    • *** 表示变动前的文件
    • 3,9 表示下面的内容是该文件的第 3 到 9 行
    • 每行前面的标记位,+ 表示该行为新增,! 表示该行有改动,- 表示该行被删除
  4. 分隔符下的第二部分第二段:
    • --- 表示变动后的文件

unified diff

合并模式的 diff

diff -u f1 f2:

--- f1	2024-03-11 21:08:41
+++ f2 2024-03-11 21:08:40
@@ -3,7 +3,7 @@
3
4
5
-6
+66
7
8
9
  1. 第一部分 --- f1 2024-03-11 21:08:41:文件名和时间

    • --- 表示变动前的文件
    • +++ 表示变动后的文件
  2. 第二部分 @@ -3,7 +3,7 @@:表示变动的位置
    • -3,7- 号表示变动前的文件,3,7 表示从第 3 行开始的连续 7 行
    • +3,7:表示变动后的文件的从第 3 行开始的连续 7 行
  3. 第三部分:变动的具体内容,上下文各显示 3 行
    • 标志位 - 表示第一个文件删除的行
    • 标志位 + 表示第二个文件新增的行

附:git 版本的 diff

git diff
diff --git a/f1 b/f1
index 6f8a38c..449b072 100644
--- a/f1
+++ b/f1
@@ -3,7 +3,7 @@
3
4
5
-6
+66
7
8
9
  1. 第一部分 diff --git a/f1 b/f1

    • diff --git 表示这是 git 版本的 diff
    • a/f1 b/f1 表示进行比较的是 a 版本的 f1(即变动前)和 b 版本的 f1(即变动后)
  2. 第二部分 index 6f8a38c..449b072 100644
    • index xxx..xxx表示两个版本的 git 哈希值(index 区域的 6f8a38c 对象,与工作目录区域的 449b072 对象进行比较)
    • 100644 是对象的模式(普通文件,644 权限)
  3. 后面的部分与 unified 模式相同

diff 输出解释的更多相关文章

  1. 《The Linux Command Line》 读书笔记03 ls命令与长格式输出解释 文件权限

    ls命令与长格式输出解释 文件权限 ls命令 ls 命令用于列出目录内容,不带参数时列出当前工作目录的内容,也可以指定目标目录(可以指定多个),列出目标目录下的内容. ls命令的参数 ls -l 长格 ...

  2. 【转】top命令输出解释以及load average 详解及排查思路

    https://blog.csdn.net/zhangchenglikecc/article/details/52103737 昨天nagios报警warning,没来得及留下报警截图,nagios值 ...

  3. top命令输出解释以及load average 详解及排查思路

    原地址: https://blog.csdn.net/zhangchenglikecc/article/details/52103737 1.top输出以及load average 详解 昨天nagi ...

  4. linux diff具体解释

    diff是Unix系统的一个非常重要的工具程序. 它用来比較两个文本文件的差异,是代码版本号管理的基石之中的一个.你在命令行下,输入: $ diff <变动前的文件> <变动后的文件 ...

  5. Linux面试必问-对照目录内容的命令“Diff”具体解释

    dir1下有个log_1.log dir2下有个log_2.log 两个文件例如以下: p_ylwu@VM_194_111_sles10_64:/home/jdxochen/exercise> ...

  6. [系统资源]/proc/meminfo和free输出解释

    High Level statistics RHEL 5, RHEL 6 and RHEL 7 MemTotal: Total usable memory MemFree: The amount of ...

  7. Linux ps -ef 命令输出解释

    UID: 程序拥有者PID:程序的 IDPPID:程序父级程序的 IDC:  CPU 使用的百分比STIME: 程序的启动时间TTY: 登录终端TIME : 程序使用掉 CPU 的时间CMD: 下达的 ...

  8. Linux下diff的操作详解

    总述 Linux diff命令用于比较文件的差异.diff以逐行的方式,比较文本文件的异同处.特别是比较两个版本不同的文件,如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子 ...

  9. svn diff 详解

    UI版: 如果多人编辑同一段代码,常常容易出现冲突的情况: 如果出现冲突,我们如何解决他呢? 1 可以选择使用自己的文件mime file,也可以使用 他们的文件 their file 2 解决冲突, ...

  10. diff输出格式解析

    1 命令格式 $diff <变动之前的文件> <变动之后的文件> 2 diff文件的三种格式 normal diff context diff unified diff 3 示 ...

随机推荐

  1. ARM+DSP!全志T113-i+玄铁HiFi4开发板硬件说明书(1)

    前 言 本文档主要介绍开发板硬件接口资源以及设计注意事项等内容,测试板卡为全志T113-i+玄铁HiFi4开发板.由于篇幅问题,本篇文章共分为上下两集,点击账户可查看更多内容详情,开发问题欢迎留言,感 ...

  2. 深度长文解析SpringWebFlux响应式框架15个核心组件源码

    Spring WebFlux 介绍 Spring WebFlux 是 Spring Framework 5.0 版本引入的一个响应式 Web 框架,它与 Spring MVC 并存,提供了一种全新的编 ...

  3. Java类全路径冲突解决方法

    1. 问题 今天在开发中遇到这样一个问题,A同事在导入了我们的实验SDK后,发现实验无法正常获取,查看日志发现了NoClassDefFoundError异常,无法加载的的类中逻辑比较简单,只依赖了另外 ...

  4. Unicode 和JS中的字符串

    计算机内部使用二进制存储数据,只认识0和1两个数字,计算机的世界只有0和1.但我们的世界却充满着文字,如a, b, c.怎样才能让计算机显示文字,供我们使用和交流?只能先把文字转化成数字进行存储,然后 ...

  5. Basic_pentesting_1靶机渗透流程

    Basic_pentesting_1 Description This is a small boot2root VM I created for my university's cyber secu ...

  6. P2910

    #include<iostream> #include<utility> #include<vector> using namespace std; typedef ...

  7. 洛谷P1451

    背景:复习 简单的dfs,也可以说是有点像连通块 #include<iostream> #include<utility> using namespace std; typed ...

  8. 全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法-模拟串口传感器和主机

    全网最适合入门的面向对象编程教程:11 类和对象的 Python 实现-子类调用父类方法-模拟串口传感器和主机 摘要: 本节课,我们主要讲解了在 Python 类的继承中子类如何进行初始化.调用父类的 ...

  9. KubeCube 用户管理与身份认证

    前言 KubeCube (https://kubecube.io) 是由网易数帆近期开源的一个轻量化的企业级容器平台,为企业提供 kubernetes 资源可视化管理以及统一的多集群多租户管理功能.K ...

  10. windows上传ipa到开发者中心(app store)的方法

    假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开发者中心才能在构建版本里选择构建版本上架 ...