用于最小化文件的 git diff 过滤器

Ale*_*ysh 4 git

我的 git 树中有一个最小化的 JSON 文件。它是一行上的一堆数据,没有空格。

这个文件的差异不是很有用,数据的任何变化,当然,都会导致整行被改变。

我希望能够有选择地告诉 git 差异不是文件本身,而是该文件的漂亮打印机(如python -mjson.tooljq .)的输出。

现在我正在使用这个命令:

diff -u <(git show HEAD:file.json | jq .) <(jq . < file.json)

这样做的正确方法是什么?

小智 5

我会为受影响的文件设置一个 git textconv过滤器。

在 .gitattributes 中,设置差异工具:

*.json diff=json
Run Code Online (Sandbox Code Playgroud)

在 .git/config 中:

[diff "json"]
    textconv = "cat $1 | json_pp"
Run Code Online (Sandbox Code Playgroud)

json_pp存在于适用于 Windows 的 Git 发行版中,我对此的运气比使用jq.