2010-10-13 80 views
46

我的編輯器正在改變我的源文件的行尾。當我做git diff時,我看到同一條線兩次 - 一次與-和一次+ - 沒有明顯區別。git diff - 讓我看看結局的變化?

我該如何獲得git diff來告訴我這個改變實際上是什麼?

回答

5

圖形化差異工具會向您顯示更好的變化 - 請嘗試git difftool。使用meld,並設置首選項以顯示空白。 (編輯 - >首選項 - >顯示空白。)

其他圖形工具可能有類似的選項 - @棉花的答案+評論告訴你如何用vimdiff做到這一點。

+0

圖形比較工具可能不可用。@ paul-whittaker的答案將在問題暗示的背景下工作(某個終端)。 – beOn 2018-01-15 23:37:34

44

首先,確保你使用的彩色輸出(帶git diff --color EG)和您已啓用空白高亮用(例如)

git config color.diff.whitespace "red reverse" 

這可能不是在所有情況下工作,但是,作爲git似乎不會突出顯示尾隨空白刪除行。要查看您刪除的空白,只需使用

git diff -R 

把空白的比較,如果它確實得到強調的「增加」的一面。

有關更多詳細信息,請參見this SO question的答案。

+0

這是實際的答案,但我不得不承認,看到新行上的紅色空間是有趣的。謝謝! – zeh 2012-08-10 15:47:37

5
git diff --ws-error-highlight=new,old 

突出顯示空白區域在變化的行中不一致。

6

一種方式看空白改變就是做一個字符一個字符「字DIFF」與

git diff --color --word-diff-regex=. 

這凸顯了所有空白行中改變到處。刪除空白包裹在[--]中,並在{++}中添加空格。

或者,如suggested by Alex

git diff --color --ws-error-highlight=new,old 

亮點線端部的所有空格變化。

7

您可以使用以下命令查看換行結束區別。

git diff | cat -v 

然後在CRLF(DOS)結束時打印「^ M」,沒有結束LF(Unix)結束。

顯然,git diff正在做正確的事情,爲CRLF結尾打印CR和LF字符。 但是因爲控制檯使用CR,所以我們看不到它。通過使用cat -v,我們可以使其可見。