2015-09-07 42 views
1

當通過git擴展或使用git diff命令查看暫存或未掛起的更改時,我可以看到git認爲整個文件已更改。它會顯示整個文件的刪除塊,然後顯示一個附加塊(反之亦然),因此很難確切地看到發生了什麼變化。爲什麼git不顯示正確的更改,而差異查看器是?

當我查看比如​​winmerge等差異查看器中的更改時,我可以看到確切的更改。懷疑這可能與git中的行結束設置有關,我決定通過選中「Preserve origin EOL chars」選項來更改winmerge中的行結束設置,認爲這將模擬我在git中看到的問題。但是,這沒有什麼區別。不知何故,git可以看到差異查看器無法看到行結束的變化。

當我執行git reset --hard時,出現相關問題。 Git sill認爲一些文件已經改變並且以與上述相同的方式顯示它們,但差異查看器認爲沒有任何改變。令人討厭的是,執行git reset --hard並沒有擺脫這些文件。

任何想法?

===額外注====

事實證明,歷史上我們沒有配置這意味着該設置core.autocrlf使用「假」的默認值庫中的行結束符(見https://help.github.com/articles/dealing-with-line-endings/以進一步解釋此設置)。添加了一個新的.gitattributes文件,該配置的值爲'auto'。作爲短期修復,我們註釋掉了text屬性的設置,所以我們恢復了原來的設置。但是,如果我們採用推薦的「自動」設置,這需要對行結束進行標準化,這可能是最好的。

+0

您可以指定如何讓git diff查看更改。請參閱http://git-scm.com/docs/git-diff –

回答

1

這幾乎肯定是由一行結尾不匹配造成的。您可以使用git diff -b來顯示差異,而忽略空白變化,這應該會顯示您感興趣的實質性更改。

相關問題