如何在正则表达式中获得 git 差异?

How to get git diff within a regex?

我希望 git diff 仅在正则表达式中进行比较。例如:

版本 A 的文件内容:

A 0 1 
A 1 1 2
A 0 1 2 3
A 1 1 2 3 4

版本 B 的文件内容:

B 0 1
B 0 1 2
B 1 1 2 4
B 1 1 2 4 8 16

我可能想忽略第一个词(即 'A' 或 'B'),匹配接下来的两个词,并忽略该行的其余部分。上面只报第二行和第三行。

How to grep the git diff? 表示 git -G 曾经做我想做的事,但它的行为已经改变。有没有办法实现这一点(除了 diff <(git show ... | awk ...) <(git show ... | awk ...) 之类的事情)?

diff 让您可以更改 diff 的格式。您想要以专门的方式更改 content。使用 diffgit showawk(或类似的)来完成此操作是正确的。它遵循在小工具之间管道文本的 Unix 哲学。

我建议将其设置为 a git command alias 或编写 shell 脚本,如 ~/bin/git-column-diff。那么你可以git column-diff file1 file2.

可以 滥用 the textconv feature 为您进行过滤,但这将需要具有特殊扩展名的文件,并且会干扰所有文件的差异化时间,你必须总是希望相同的列有所不同。

可以编写一个程序来执行您的自定义差异并设置GIT_EXTERNAL_DIFF指向该程序。