|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
只要了解了Linux的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux就是希望构架网站,根本没有想到要先了解一下Linux的基础。这是相当困难的。
diff是Unix体系的一个很主要的工具程序。
它用来对照两个文本文件的差别,是代码版本办理的基石之一。你在命令行下,输出: diff就会告知你,这两个文件有何差别。它的显现了局不太好懂,上面我就来讲明,怎样读懂diff。
1、diff的三种格局
因为汗青缘故原由,diff有三种格局: *一般格局(normaldiff)
*高低文格局(contextdiff)
*兼并格局(unifieddiff) 我们顺次来看。
2、示例文件
为了便于解说,先新建两个示例文件。
第一个文件叫做f1,内容是每行一个a,一共7行。 第二个文件叫做f2,修正f1而成,第4行酿成b,其他稳定。 3、一般格局的diff
如今对f1和f2举行对照: 这时候,diff就会显现一般格局的了局: 第一行是一个提醒,用来讲明变化地位。 它分红三个部分:后面的"4",暗示f1的第4行有变更;两头的"c"暗示变化的形式是内容改动(change),其他形式另有"增添"(a,代表addition)和"删除"(d,代表deletion);前面的"4",暗示变化后酿成f2的第4行。
第二行分红两个部分。 后面的小于号,暗示要从f1傍边往除该行(也就是第4行),前面的"a"暗示该行的内容。
第三行用来支解f1和f2。 第四行,相似于第二行。 后面的年夜于号暗示f2增添了该行,前面的"b"暗示该行的内容。
最早的Unix(即AT&T版本的Unix),利用的就是这类格局的diff。
4、高低文格局的diff
上个世纪80年月初,加州年夜学伯克利分校推出BSD版本的Unix时,以为diff的显现了局太复杂,最好到场高低文,便于懂得产生的变化。因而,推出了高低文格局的diff。
它的利用办法是到场c参数(代表context)。 显现了局以下: ***f12012-08-2916:45:41.000000000+0800
---f22012-08-2916:45:51.000000000+0800
***************
***1,7****
a
a
a
!a
a
a
a
---1,7----
a
a
a
!b
a
a
a 这个了局分红四个部分。
第一部分的两行,显现两个文件的基础情形:文件名和工夫信息。 ***f12012-08-2916:45:41.000000000+0800
---f22012-08-2916:45:51.000000000+0800 "***"暗示变化前的文件,"---"暗示变化后的文件。
第二部分是15个星号,将文件的基础情形与变化内容支解开。 第三部分显现变化前的文件,即f1。 ***1,7****
a
a
a
!a
a
a
a 这时候不但显现产生变更的第4行,还显现第4行的后面三行和前面三行,因而一共显现7行。以是,后面的"***1,7****"就暗示,从第1行入手下手一连7行。
别的,文件内容的每行最后面,另有一个标志位。假如为空,暗示该行无变更;假如是叹息号(!),暗示该行有修改;假如是减号(-),暗示该行被删除;假如是加号(+),暗示该举动新增。
第四部分显现变化后的文件,即f2。 ---1,7----
a
a
a
!b
a
a
a 除变化行(第4行)之外,也是高低文各显现三行,统共显现7行。
5、兼并格局的diff
假如两个文件类似度很高,那末高低文格局的diff,将显现大批反复的内容,很华侈空间。1990年,GNUdiff领先推出了"兼并格局"的diff,将f1和f2的高低文兼并在一同显现。
它的利用办法是到场u参数(代表unified)。 显现了局以下: ---f12012-08-2916:45:41.000000000+0800
+++f22012-08-2916:45:51.000000000+0800
@@-1,7+1,7@@
a
a
a
-a
+b
a
a
a 它的第一部分,也是文件的基础信息。 ---f12012-08-2916:45:41.000000000+0800
+++f22012-08-2916:45:51.000000000+0800 "---"暗示变化前的文件,"+++"暗示变化后的文件。
第二部分,变化的地位用两个@作为首先和停止。 后面的"-1,7"分红三个部分:减号暗示第一个文件(即f1),"1"暗示第1行,"7"暗示一连7行。合在一同,就暗示上面是第一个文件从第1行入手下手的一连7行。一样的,"+1,7"暗示变化后,成为第二个文件从第1行入手下手的一连7行。
第三部分是变化的详细内容。 除有变化的那些行之外,也是高低文各显现3行。它将两个文件的高低文,兼并显现在一同,以是叫做"兼并格局"。每行最后面的标记位,空暗示无变化,减号暗示第一个文件删除的行,加号暗示第二个文件新增的行。
6、git格局的diff
版本办理体系git,利用的是兼并格局diff的变体。 显现了局以下: diff--gita/f1b/f1
index6f8a38c..449b072100644
---a/f1
+++b/f1
@@-1,7+1,7@@
a
a
a
-a
+b
a
a
a 第一行暗示了局为git格局的diff。 举行对照的是,a版本的f1(即变化前)和b版本的f1(即变化后)。
第二行暗示两个版本的git哈希值(index地区的6f8a38c工具,与事情目次地区的449b072工具举行对照),最初的六位数字是工具的形式(一般文件,644权限)。 index6f8a38c..449b072100644 第三行暗示举行对照的两个文件。 "---"暗示变化前的版本,"+++"暗示变化后的版本。
前面的行都与官方的兼并格局diff不异。 @@-1,7+1,7@@
a
a
a
-a
+b
a
a
a 7、浏览质料
*diff-Wikipedia
*Howtoreadapatchordiff
*Howtoworkwithdiffrepresentationingit
常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基的。 |
|