簡體   English   中英

git diff 忽略換行符

[英]git diff ignore newlines

我在用:

git diff --ignore-space-at-eol -b -w --ignore-blank-lines --ignore-cr-at-eol COMMIT1 COMMIT2

比較兩個提交刪除空格,但它仍然顯示以下內容,這基本上只是一個換行符更改:

- <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,您可以以忽略換行符的方式對算法的輸出進行后處理。 其結果是相當時髦的,如果實際的變化影響沒有的話,你會得到一個diff大塊頭,緊跟着顯示沒有變化的塊(!)。 但是,這對您的示例根本沒有真正的幫助。


1從技術上講,這里發生的事情是 Git 將每個輸入行視為單個符號。 然后它在符號上運行選定的算法,通常是 Myers。 由於行被拆分並成為單獨的符號,因此您在此處的特定示例在輸入的左側有一個符號,對於兩個原始<div ...>行中的每一行,在右側變成了兩個不同的符號。

有關這方面的更多信息,請參閱我停產的的原型中當前第 60-66 頁的內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM