git diff --word-diff匹配范围过大问题求助
解决git diff --word-diff误标记非差异内容的问题
问题场景
- 待对比的两行文本:
第一行:<h1>Intro line 06.03.2004</h1>
第二行:<h1>Intro line 15.08.2024</h1> - 执行命令
git diff --word-diff file1.txt file2.txt后,输出将未改动的尾部</h1>也包含进了差异块:<h1>Intro line [-06.03.2004</h1>-]{+15.08.2024</h1>+} - 尝试
--minimal参数无效,需要缩小差异标记范围。
解决方案
问题根源是git默认以空格作为单词分隔符,导致06.03.2004</h1>被识别为单个单词,和15.08.2024</h1>对比时整段被标记为差异。通过自定义单词匹配规则即可解决:
临时生效:使用
--word-diff-regex参数
执行以下命令,通过正则表达式将日期、HTML标签分别识别为独立单词:git diff --word-diff --word-diff-regex='[^\s<>]+|<[^>]+>' file1.txt file2.txt正确输出会仅标记日期部分的差异:
<h1>Intro line [-06.03.2004-]{+15.08.2024+}</h1>长期生效:配置全局git规则
如果需要默认使用该规则,可将正则加入git全局配置:git config --global diff.wordRegex '[^\s<>]+|<[^>]+>'之后直接执行
git diff --word-diff就能得到精准的单词差异标记。
内容的提问来源于stack exchange,提问作者thomas.mc.work
相关产品推荐
相关产品推荐

