diff是Unix系統的一個很重要的工具程序。它用來比較兩個文本文件的差別,是代碼版本管理的基石之一。 git
diff命令的輸出格式有三種:
bash
舉個例子,如今有1個文件a.txt,裏面內容以下:工具
咱們先經過複製一份文件b.txt:this
sudo cp a.txt b.txt複製代碼
並把b.txt內容第二行改成其餘的內容,以下:spa
(1)正常格式code
正常格式下咱們無需加任何選項,直接以下比對就好:orm
diff a.txt b.txt複製代碼
執行完的結果以下:
cdn
咱們一行一行來解釋上圖的含義。blog
行一行:2c2it
第一個2表示文件a.txt中第2行有變化,後面的2表示a.txt經過變化成爲b.txt中的第2行。中間的c就是具體的變化了。c表示改變(change),其它類型還有d刪除(delete),a增長(addition)。
第二行:< line 2
表示a.txt文件中去除第2行的內容,其中小於號表示去除。
第三行:------
分隔線
第四行:> this is 2
表示b.txt文件中增長第2行的內容,其中大於號表示增長。
(2)上下文格式
因爲在正常格式下,提示信息比較少,咱們沒法快速定位所修改的地方,常常須要打開文件才知道修改細節。因此,爲了給出更多的信息,引入了上下文格式。它的使用命令以下:
diff -c a.txt b.txt複製代碼
上圖的輸出結果的具體含義以下:
第1行和第2行表示修改前及修改後的文件及更新時間。下面的*** 1,3 ****表示a.txt文件顯示的從第1行開始到第3行爲止的內容。line 2前的歎號(!)表示該行有改動,若是該行被刪除,則爲減號(-),若是該行被增長,則爲加號(+)。後面幾行的含義相似。
(3)合併格式
這種格式是正常格式與上下文格式的綜合版,同時這種格式也是git diff所採用的格式。使用這種格式的命令是:
diff -u a.txt b.txt複製代碼
上圖的輸出結果詳細含義以下:
第1行和第2行表示修改前及修改後的文件及更新時間。後面的-line 2表示原文件a.txt裏的內容,+this is 2表示b.txt裏的內容。
除了以上三種格式外,還有另一直更直觀的方式——並排格式。這種顯示格式的命令格式以下:
diff a.txt b.txt -y -W 50複製代碼
這種格式就是以並列的格式進行顯示,也很直觀明瞭。第2行裏,有個「|」符號,表示這行有更改。另外,若是前面是「<」,表示後面文件比前面文件少了1行內容;若是是">",表示後面文件比前面文件多了1行內容。