[英]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 ...>
行中的每一行,在右側變成了兩個不同的符號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.