1. 程式人生 > >git diff的文字說明

git diff的文字說明

說明 信息 文件相似度 管理系統 block 在一起 用兩個 兩個 區域

如果兩個文件相似度很高,那麽上下文格式的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的文字說明