diff 输出解释
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
-
第一部分
6c6
:表示变动的位置- 第一个
6
表示文件 f1 的第 6 行有变化 c
表示变动模式是change
(变更)。除了change
外,变动模式还有add
(新增)和delete
(删除)- 第二个
6
表示变动后变成 f2 的第 6 行
- 第一个
-
第二行
< 6
和 f1 相关。<
表示要从 f1 当中去除该行,后面的6
表示该行的内容 -
第三行
---
用来分割 f1 和 f2 的内容 -
第四行
> 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
- 第一部分
*** f1 Mon Mar 11 21:05:01 2024
:文件名和时间***
表示变动前的文件---
表示变动后的文件
- 第三行的星号
***************
是分隔符 - 分隔符下的第二部分第一段:
***
表示变动前的文件3,9
表示下面的内容是该文件的第 3 到 9 行- 每行前面的标记位,
+
表示该行为新增,!
表示该行有改动,-
表示该行被删除
- 分隔符下的第二部分第二段:
---
表示变动后的文件
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
- 第一部分
--- f1 2024-03-11 21:08:41
:文件名和时间---
表示变动前的文件+++
表示变动后的文件
- 第二部分
@@ -3,7 +3,7 @@
:表示变动的位置-3,7
:-
号表示变动前的文件,3,7
表示从第 3 行开始的连续 7 行+3,7
:表示变动后的文件的从第 3 行开始的连续 7 行
- 第三部分:变动的具体内容,上下文各显示 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
- 第一部分
diff --git a/f1 b/f1
:diff --git
表示这是 git 版本的 diffa/f1 b/f1
表示进行比较的是 a 版本的 f1(即变动前)和 b 版本的 f1(即变动后)
- 第二部分
index 6f8a38c..449b072 100644
:index xxx..xxx
表示两个版本的 git 哈希值(index 区域的6f8a38c
对象,与工作目录区域的449b072
对象进行比较)100644
是对象的模式(普通文件,644 权限)
- 后面的部分与 unified 模式相同