web-dev-qa-db-ja.com

git diff-行末の変更を表示しますか?

私の編集者は、ソースファイルの行末を変更しています。 git diffを実行すると、同じ行が2回表示されます。1回は-で、もう1回は+で、目に見える違いはありません。

この変更が実際に何であったかを示すためにgit diffを取得するにはどうすればよいですか?

71
Stonky

まず、色付きの出力を使用していることを確認します(例:git diff --color)と空白の強調表示を有効にしていること(例)

git config color.diff.whitespace "red reverse"

ただし、gitremoved行の末尾の空白を強調表示しないため、これはすべての場合に機能するわけではありません。削除した空白を表示するには、単に使用します

git diff -R

空白を比較の「追加」側に配置して、強調表示します。

詳細については、 this SO question の回答を参照してください。

58
Paul Whittaker

次のコマンドで行末の違いを確認できます。

git diff | cat -v

次に、CRLF(DOS)終了の場合「^ M」が出力され、LF(Unix)終了の場合は何も出力されません。

どうやらgit diffは正しいことをしていて、CRLFの終わりにCRとLF文字を出力しているようです。ただし、CRはコンソールによって消費されるため、表示できません。 cat -vを使用すると、表示できます。

23
droid7c2

空白の変更を確認する1つの方法は、文字ごとに「Word diff」を実行することです

git diff --color --Word-diff-regex=.

これにより、行のすべての空白の変更が強調表示されます。削除された空白は[-および-]でラップされ、{+および+}で空白が追加されます。

または、 Alexが推奨

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

行のendsでのすべての空白の変更を強調表示します。

15
ntc2
git diff --ws-error-highlight=new,old

変更された行の空白の差分を強調表示します。

8
Alex

グラフィカルな差分ツールを使用すると、変更がよりわかりやすく表示されます。git difftool

meld を使用して、空白を表示するように設定します。 (編集->設定->空白を表示。)

他のグラフィカルツールにはおそらく同様のオプションがあります。@ Cottonのanswer + commentは、vimdiffでこれを行う方法を示しています。

5
bstpierre