引用自讀懂diff
git diff 采用的是unix中合并格式的diff
合并格式的diff
如果兩個(gè)文件相似度很高授嘀,那么上下文格式的diff物咳,將顯示大量重復(fù)的內(nèi)容,很浪費(fèi)空間蹄皱。1990年览闰,GNU diff率先推出了"合并格式"的diff芯肤,將f1和f2的上下文合并在一起顯示。
它的使用方法是加入u參數(shù)(代表unified)压鉴。
$ diff -u f1 f2
顯示結(jié)果如下:
--- 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
"---"表示變動(dòng)前的文件,"+++"表示變動(dòng)后的文件油吭。
第二部分击蹲,變動(dòng)的位置用兩個(gè)@作為起首和結(jié)束
@@ -1,7 +1,7 @@
前面的"-1,7"分成三個(gè)部分:減號(hào)表示第一個(gè)文件(即f1),"1"表示第1行婉宰,"7"表示連續(xù)7行歌豺。合在一起,就表示下面是第一個(gè)文件從第1行開始的連續(xù)7行心包。同樣的类咧,"+1,7"表示變動(dòng)后,成為第二個(gè)文件從第1行開始的連續(xù)7行谴咸。
第三部分是變動(dòng)的具體內(nèi)容
a
a
a
-a
+b
a
a
a
除了有變動(dòng)的那些行以外轮听,也是上下文各顯示3行。它將兩個(gè)文件的上下文岭佳,合并顯示在一起血巍,所以叫做"合并格式"。每一行最前面的標(biāo)志位珊随,空表示無變動(dòng)述寡,減號(hào)表示第一個(gè)文件刪除的行,加號(hào)表示第二個(gè)文件新增的行叶洞。
git格式的diff
版本管理系統(tǒng)git鲫凶,使用的是合并格式diff的變體。
$ git diff
顯示結(jié)果如下:
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
第一行表示結(jié)果為git格式的diff
diff --git a/f1 b/f1
進(jìn)行比較的是衩辟,a版本的f1(即變動(dòng)前)和b版本的f1(即變動(dòng)后)螟炫。
第二行表示兩個(gè)版本的git哈希值(index區(qū)域的6f8a38c對(duì)象,與工作目錄區(qū)域的449b072對(duì)象進(jìn)行比較)艺晴,最后的六位數(shù)字是對(duì)象的模式(普通文件昼钻,644權(quán)限)。
index 6f8a38c..449b072 100644