diff 的用法有很多,默认的格式有三种,这不是本文的重点。本文将详细介绍Git中默认的合并格式的diff用法。
概述
本片文章将会从实战的角度出发,从用户的实际使用的角度出发,学习如何读懂和使用diff的合并格式。不建议用户去使用和学习diff其他格式。diff 合并格式是git以及GitHub的默认显示格式。
格式
我们知道diff 有三个格式, 有详细的说明,这里不再重复。
合并格式(unified diff)
本文重点描述的了diff的合并格式,用户并不需要学习其他格式,因为过去的格式不好用才发展处今天的合并格式。
合并格式的diff
diff -u 文件1 文件2 #-u 表示unified 使用合并格式
如果两个文件相似度很高,那么上下文格式的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行。它将两个文件的上下文,合并显示在一起,所以叫做"合并格式"。每一行最前面的标志位,空表示无变动,减号表示第一个文件删除的行,加号表示第二个文件新增的行。
GitHub(Git) diff
我们知道Git 提供了diff,那么如何看懂了呢?和linux中git的不同之处在哪里呢?
Git diff 对比的提交前和提交后,或者 add 前和add 后的文件对比。
Git 使用了主流的Git 合并格式
在查看Git 提交的时候,默认显示的提交前对比提交后的变动情况。
可以看见,提交前和提高后文件的对比diff 显示情况,很是一目了然。
总结
本文结合 diff的用法,在 文章基础上进一步阐释git diff
等系列命令的输出结果。以及在Github 输出结果的表示,其本质都是diff 合并格式的扩展结果。用户只需要学习使用diff的合并格式用法即可。
原创内容,禁止抄袭!二〇二四年一月七日 13:38:23
0 评论