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行内容。