-U<n>--unified=<n>

Generate diffs with <n> lines of context instead of the usual three. Implies -p.

===============================================================================================================

-p-u--patch

Generate patch (see section on generating patches). This is the default.

===============================================================================================================

如果两个文件相似度很高,那么上下文格式的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

最新文章

  1. C++实现邮件群发的方法
  2. svn 版本控制
  3. Unity浅析
  4. linux cpu占有率居高不下 调试
  5. bzoj 3196 树套树模板
  6. C++静态代码分析PreFast
  7. unity 解析tmx
  8. 整理了一些jQuery关于事件冒泡和事件委托的技巧
  9. MyEclipse的注册过程
  10. error: command &#39;x86_64-linux-gnu-gcc&#39; failed with exit status 1
  11. 学习vim命令:“:w !sudo tee %”
  12. 信号量 Semaphore
  13. YII2框架动态创建表模型
  14. Java实现折半(二分)插入排序
  15. js控件位置
  16. 说说自己对RESTful API的理解s
  17. JavaScript严格模式说明带示例
  18. Struts2 转换器
  19. MNIST数字识别问题
  20. submit提交判断

热门文章

  1. java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)
  2. MongoDB 系列(一) C# 类似EF语法简单封装
  3. mysql裸文件备份XtraBackup (innobackupex)
  4. Hbase项目(完整版)
  5. 重温前端基础之-js排序算法
  6. SLAM概念学习之随机SLAM算法
  7. mac下maven的安装配置与使用
  8. 移动端font-size适配
  9. Mathab和Python的numpy中的数组维度
  10. BZOJ 4870: [Shoi2017]组合数问题 矩阵乘法_递推