学习git 中看到git diff的显示格式,才想起来自己一直不懂diff的显示格式,特地去搜索学习一下。这算是个学习笔记吧。
===============================================================
Unix diff 格式分为三类:
- normal diif diff 默认的
- context diff dif -c
- unified diff diff -u
normal diff:
4c4
< a
---
> b
只显示变化的部分:
c ——change
a——add
d——deletion
4c4
<移除
>增添
a 的第四行 change 编程了 b的第四行
context diff:
*** f1 2012-08-29 16:45:41.000000000 +0800
--- f2 2012-08-29 16:45:51.000000000 +0800
***************
*** 1,7 ****
a
a
a
!a
a
a
a
--- 1,7 ----
a
a
a
!b
a
a
a
会显示变更位置的上下文,1,7 标识显示范围为第一行到第七行
!——change
- ——deletion
+——add
unified diff:
--- 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
会合并相同行进行显示, @@ -1,7 +1,7 @@
-1,7 f1的 1-7行, +1,7 f2 的1-7行(-1, +1,2 标识f2 加了一行)
-a f1 删除a
+b f2 增加b
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
增加部分内容,两者hash指, index区域与工作目录区域对比
最后为权限信息(对象的模式)(普通文件644权限)
ref:
http://www.ruanyifeng.com/blog/2012/08/how_to_read_diff.html