html - 忽略 git-diff 中的任何空格或换行符

标签 html git diff git-diff

我有以两种不同方式呈现的相同 HTML 文件,我想使用 git diff 对其进行比较,注意忽略所有空格、制表符、换行符、回车符,或任何严格意义上不属于我文件源代码的内容。

我实际上正在尝试这个:

git diff --no-index --color --ignore-all-space <file1> <file2>

但是当一些 html 标签全部折叠在一行上(而不是每行一个并以表格形式折叠)时,git-diff 检测到的是差异(而对我来说不是)。

<html><head><title>TITLE</title><meta ......

不同于

<html>
    <head>
        <title>TITLE</title>
        <meta ......

我错过了什么选择来完成我需要的和威胁的,就好像它是一样的?

最佳答案

git diff支持逐行或逐字比较文件,还支持定义单词的构成。在这里您可以将每个非空格字符定义为一个词来进行比较。这样,它将忽略所有空格,包括 white-spcae、tab、line-break 和 carrige-return,这是您需要的。

要实现它,有一个完美的选择--word-diff-regex , 并设置它 --word-diff-regex=[^[:space:]] .引用doc了解详情。

git diff --no-index --word-diff-regex=[^[:space:]] <file1> <file2>

这是一个例子。我用 a.html 创建了两个文件如下:

<html><head><title>TITLE</title><meta>

b.html如下:

<html>
    <head>
        <title>TI==TLE</title>
        <meta>

通过运行

git diff --no-index --word-diff-regex=[^[:space:]] a.html b.html

它突出了TITLE的区别和 TI{+==+}TLEplain 中的两个文件中模式如下。您还可以指定 --word-diff=<mode>以不同的模式显示结果。 mode可以是color , plain , porcelainnone , 和 plain默认。

diff --git a/d.html b/a.html
index df38a78..306ed3e 100644
--- a/d.html
+++ b/a.html
@@ -1 +1,4 @@
<html>
    <head>
            <title>TI{+==+}TLE</title>
                    <meta>

关于html - 忽略 git-diff 中的任何空格或换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25991659/

相关文章:

git - 如何在当前 HEAD 和推送中的最新文件之间的预接收 Hook 中获取文件的 git diff?

javascript - 将单独 JS 文件中的项目迭代添加到行中的 HTML/EJS 表中 - 使用 NodeJS

html - 高度和宽度不适用于 CSS 内容属性

git - rebase 依赖主题分支

diff - 是否有任何具有垂直比较的 n-way diff 工具?

SVN:为大量修订创建差异

html - 强制 Internet Explorer 9 使用标准文档模式

html - Angularjs 在带有空格的下拉列表中附加属性

git - 将常规差异补丁重新格式化为 git 格式

Git 推送/克隆到新服务器