git diff 忽略换行
git diff ignore newlines
我正在使用:
git diff --ignore-space-at-eol -b -w --ignore-blank-lines --ignore-cr-at-eol COMMIT1 COMMIT2
区分两个提交删除白色 space 但它仍然显示以下内容,这基本上只是一个换行符更改:
- <div class="model-content" style="border: 2px solid #d5001e;border-radius: 8px;">
- <div class="model-header" style="border-bottom: 1px solid #d5001e;background: #d5001c;">
+ <div class="model-content"
+ style="border: 2px solid #d5001e;border-radius: 8px;">
+ <div class="model-header"
+ style="border-bottom: 1px solid #d5001e;background: #d5001c;">
问题: 如何让git diff
忽略这些新行?
不幸的是,Git 的主要差异算法是基于行的。在应用空格修改之前 分割行(好吧,它确实有点混合在一起)。结果是任何时候原来的单行变成两行,反之亦然,git diff
本身总是将此视为更改。1
使用 Git 的 word-diff,您可以以忽略换行符的方式获得算法的输出 post-processed。结果相当古怪,因为如果实际更改影响 no 个单词,您会得到一个 diff hunk header,后跟一个没有显示任何更改的块(!)。不过,这对您的示例没有任何实际帮助。
1从技术上讲,这里发生的事情是 Git 将每个输入行视为单个符号。然后它在 符号 上运行选定的算法,通常是 Myers。由于线条被拆分并成为单独的符号,因此您的特定示例在输入的左侧有一个符号,在右侧变成两个不同的符号,对于两个原始 <div ...>
行中的每一行。
有关此的更多信息,请参阅我的 stalled-out book.
原型中当前第 60–66 页的内容
我正在使用:
git diff --ignore-space-at-eol -b -w --ignore-blank-lines --ignore-cr-at-eol COMMIT1 COMMIT2
区分两个提交删除白色 space 但它仍然显示以下内容,这基本上只是一个换行符更改:
- <div class="model-content" style="border: 2px solid #d5001e;border-radius: 8px;">
- <div class="model-header" style="border-bottom: 1px solid #d5001e;background: #d5001c;">
+ <div class="model-content"
+ style="border: 2px solid #d5001e;border-radius: 8px;">
+ <div class="model-header"
+ style="border-bottom: 1px solid #d5001e;background: #d5001c;">
问题: 如何让git diff
忽略这些新行?
不幸的是,Git 的主要差异算法是基于行的。在应用空格修改之前 分割行(好吧,它确实有点混合在一起)。结果是任何时候原来的单行变成两行,反之亦然,git diff
本身总是将此视为更改。1
使用 Git 的 word-diff,您可以以忽略换行符的方式获得算法的输出 post-processed。结果相当古怪,因为如果实际更改影响 no 个单词,您会得到一个 diff hunk header,后跟一个没有显示任何更改的块(!)。不过,这对您的示例没有任何实际帮助。
1从技术上讲,这里发生的事情是 Git 将每个输入行视为单个符号。然后它在 符号 上运行选定的算法,通常是 Myers。由于线条被拆分并成为单独的符号,因此您的特定示例在输入的左侧有一个符号,在右侧变成两个不同的符号,对于两个原始 <div ...>
行中的每一行。
有关此的更多信息,请参阅我的 stalled-out book.
原型中当前第 60–66 页的内容