@maorongrong
2016-06-24T11:20:18.000000Z
字数 1110
阅读 556
Linux
Git
GNU diff 率先推出了"合并格式"的 diff,将 f1 和 f2 的上下文合并在一起显示。
它的使用方法是加入u参数(代表 unified):
$ diff -u f1 f2
显示结果如下:
--- f1 2012-08-29 16:45:41.000000000 +0800
+++ f2 2012-08-29 16:45:51.000000000 +0800
第一部分,也是文件的基本信息。
"---"表示变动前的文件,"+++"表示变动后的文件。
@@ -1,7 +1,7 @@
第二部分,变动的位置用两个@作为起首和结束。
前面的"-1,7"分成三个部分:减号表示第一个文件(即 f1),"1"表示第 1 行,"7"表示连续 7 行。合在一起,就表示下面是第一个文件从第 1 行开始的连续 7 行。同样的,"+1,7"表示变动后,成为第二个文件从第 1 行开始的连续 7 行。
a
a
a
-a
+b
a
a
a
第三部分是变动的具体内容。
除了有变动的那些行以外,也是上下文各显示 3 行。它将两个文件的上下文,合并显示在一起,所以叫做"合并格式"。每一行最前面的标志位,空表示无变动,减号表示第一个文件删除的行,加号表示第二个文件新增的行。
amy@amy-host1:~/minipinterest$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 132aa90..04b2bdc 100644
--- a/readme.txt
+++ b/readme.txt
@@ -10,3 +10,4 @@ test rollback
6-24 16:34 have fix the bug at issue-101 branch, and merge to master
6-24 16:42 git stash pop the saved task to master
6-24 17:36 test about 'reset HEAD''s alias = unstage
+6-24 18:56 about diff git
第一行表示结果为 git 格式的 diff。
diff --git a/f1 b/f1
进行比较的是,a版本的 f1(即变动前)和b版本的 f1(即变动后)。
第二行表示两个版本的 git 哈希值(index 区域的 6f8a38c 对象,与工作目录区域的 449b072 对象进行比较),最后的六位数字是对象的模式(普通文件,644权限)。
index 6f8a38c..449b072 100644
第三行表示进行比较的两个文件。
--- a/f1
+++ b/f1
"---"表示变动前的版本,"+++"表示变动后的版本。
后面的行都与官方的合并格式 diff 相同。