11.4.4 差异比较:git diff
Git差异比较功能在前面的实践中也反复地接触过了,尤其是在介绍暂存区的相关章节重点介绍了git diff命令如何对工作区、暂存区、版本库进行比较:
比较里程碑B和里程碑A,用命令:git diff B A
比较工作区和里程碑A,用命令:git diff A
比较暂存区和里程碑A,用命令:git diff—cached A
比较工作区和暂存区,用命令:git diff
比较暂存区和HEAD,用命令:git diff—cached
比较工作区和HEAD,用命令:git diff HEAD
1.文件不同版本的差异比较
差异比较还可以使用路径参数,只显示不同版本间该路径下文件的差异。语法格式如下:
$git diff<commit1><commit2>—<paths>
2.非Git目录/文件的差异比较
命令git diff还可以在Git版本库之外执行,对非Git目录进行比较,就像GNU的diff命令一样。之所以提供这个功能是因为Git差异比较命令更为强大,提供了对二进制文件差异等的扩展支持。语法格式如下:
$git diff<path1><path2>
3.扩展的差异语法
Git扩展了GNU的差异比较语法,提供了对重命名、二进制文件、文件权限变更的支持。本书第7篇第38章将专题介绍。
4.逐词比较,而非默认的逐行比较
Git的差异比较默认是逐行比较,分别显示改动前的行和改动后的行,到底改动在哪里还需要仔细辨别。Git还提供一种逐词比较的输出,有的人会更喜欢。使用—word-diff参数可以显示逐词比较。
$git diff—word-diff
diff—git a/src/book/02-use-git/080-git-history-travel.rst b/src/book/02-use-
git/080-git-history-travel.rst
index f740203..2dd3e6f 100644
—-a/src/book/02-use-git/080-git-history-travel.rst
+++b/src/book/02-use-git/080-git-history-travel.rst
@@ -681,7+681,7 @@Git的大部分命令可以使用提交版本作为参数(如:git diff),
:
[-18:23:48 jiangxin@hp:~/gitwork/gitbook/src/book$-]{+$+}git log—stat
—oneline I..C
0cd7f2e commit C.
README|1+
doc/C.txt|1+
上面的逐词差异显示是有颜色的:删除内容[-……-]用红色表示,添加的内容{+……+}用绿色表示。