有没有一个命令行程序可以给出两个目录的递归单词级别的差异(diff)?
diff -u
是递归的,但它不进行逐字逐句的比较。 wdiff
和 dwdiff
进行基于单词的差异比较,但是它们没有内置的递归比较选项。
我希望将结果导入到 colordiff
中,所以生成输出结果可被 colordiff
解析的程序尤其有用。有什么建议吗?谢谢!
CC
有没有一个命令行程序可以给出两个目录的递归单词级别的差异(diff)?
diff -u
是递归的,但它不进行逐字逐句的比较。 wdiff
和 dwdiff
进行基于单词的差异比较,但是它们没有内置的递归比较选项。
我希望将结果导入到 colordiff
中,所以生成输出结果可被 colordiff
解析的程序尤其有用。有什么建议吗?谢谢!
CC
Git可以做到并输出彩色:
以下方法通常有效:
git diff --color-words path1 path2
但一般来说,您可能需要这样做
git diff --no-index --color-words path1 path2
即使两个文件都不需要在 git 仓库中,也可以进行比较!
--no-index
是必需的,如果你和路径都在一个 git 工作树中。如果你或其中一个文件在 git 工作树之外,则可以省略该参数。
手册:https://git-scm.com/docs/git-diff/1.8.5(及以后版本)
git diff --no-index [--options] [--] […]
使用此形式可比较文件系统中给定的两条路径。当在 Git 控制的工作树中运行该命令且至少有一条路径指向工作树之外时,可以省略 --no-index 选项,或者当在 Git 控制之外的工作树中运行该命令时。
-
不能作为使用标准输入的指令。我尝试了Bash进程替换(git diff --no-index -- <(echo foo quux baz) somefile
),但显然git-diff-file
不会从命名管道中读取,而是打印出类似于"contents"的pipe:[3377923]
之类的东西。 - cjsgit diff ... <(gzip -dc foo.gz) <(gzip -dc bar.gz)
。我通过在.gitattributes中添加*.gz diff=gz
,在.gitconfig中添加[diff "gz"] textconv=gzip -dc
,并运行git diff --textconv ... foo.gz bar.gz
来实现这一点。 - Ken Keys