git diff的文字說明
如果兩個文件相似度很高,那麽上下文格式的diff,將顯示大量重復的內容,很浪費空間。1990年,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 @@
a
a
a
-a
+b
a
a
a
它的第一部分,也是文件的基本信息。
--- 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行。它將兩個文件的上下文,合並顯示在一起,所以叫做"合並格式"。每一行最前面的標誌位,空表示無變動,減號表示第一個文件刪除的行,加號表示第二個文件新增的行。
六、git格式的diff
版本管理系統git,使用的是合並格式diff的變體。
$ git diff
顯示結果如下:
diff --git a/f1 b/f1
index 6f8a38c..449b072 100644
--- a/f1
+++ b/f1
@@ -1,7 +1,7 @@
a
a
a
-a
+b
a
a
a
第一行表示結果為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相同。
@@ -1,7 +1,7 @@
a
a
a
-a
+b
a
a
a
git diff的文字說明