git diff:匹配包含太多

问题描述 投票:0回答:1

我需要这两行简单的行之间的差异(根据单词进行更改):

<h1>Intro line 06.03.2004</h1>

和:

<h1>Intro line 15.08.2024</h1>

比较命令:

git diff --word-diff file1.txt file2.txt

输出:

<h1>Intro line [-06.03.2004</h1>-]{+15.08.2024</h1>+}

我的问题是它也捕获了尾随的

</h1>
,尽管这部分没有改变。我也尝试过 cli 开关
--minimal
但没有成功。如何才能将显着变化减少到最低限度?我很高兴得到建议!

git git-diff
1个回答
0
投票

默认情况下,

--word-diff
假定任何一系列非空白字符都是单个单词。所以,您所看到的正是
git help diff
中记录的内容!

您需要做的是指定一个不同的

--word-diff-regex
。您可以简单地使用类似
[^<]*
的内容,但如果您随后真正开始更改标签,那么这还不够好。

这里的问题是你需要出于什么目的进行这些差异。您可能最好使用

git diff --name-only REVISION
之类的东西来获取更改的文件名,过滤它们以获取 XML 内容,然后使用
git --no-pager REVISION:path/to/changed/file > tmp
xmldiffs
之类的程序来比较实际的 XML。 (如果您的文档是 XML。如果它们是真正的 HTML,遗憾的是,这不是人们可能会想到的友好的 XML 方言 - 除非它实际上是 XHMTL,但一般来说,HTML 5 不是。)

© www.soinside.com 2019 - 2024. All rights reserved.