私の編集者は、ソースファイルの行末を変更しています。 git diff
を実行すると、同じ行が2回表示されます。1回は-
で、もう1回は+
で、目に見える違いはありません。
この変更が実際に何であったかを示すためにgit diff
を取得するにはどうすればよいですか?
まず、色付きの出力を使用していることを確認します(例:git diff --color
)と空白の強調表示を有効にしていること(例)
git config color.diff.whitespace "red reverse"
ただし、git
はremoved行の末尾の空白を強調表示しないため、これはすべての場合に機能するわけではありません。削除した空白を表示するには、単に使用します
git diff -R
空白を比較の「追加」側に配置して、強調表示します。
詳細については、 this SO question の回答を参照してください。
次のコマンドで行末の違いを確認できます。
git diff | cat -v
次に、CRLF(DOS)終了の場合「^ M」が出力され、LF(Unix)終了の場合は何も出力されません。
どうやらgit diffは正しいことをしていて、CRLFの終わりにCRとLF文字を出力しているようです。ただし、CRはコンソールによって消費されるため、表示できません。 cat -vを使用すると、表示できます。
空白の変更を確認する1つの方法は、文字ごとに「Word diff」を実行することです
git diff --color --Word-diff-regex=.
これにより、行のすべての空白の変更が強調表示されます。削除された空白は[-
および-]
でラップされ、{+
および+}
で空白が追加されます。
または、 Alexが推奨
git diff --color --ws-error-highlight=new,old
行のendsでのすべての空白の変更を強調表示します。
git diff --ws-error-highlight=new,old
変更された行の空白の差分を強調表示します。
グラフィカルな差分ツールを使用すると、変更がよりわかりやすく表示されます。git difftool
。
meld を使用して、空白を表示するように設定します。 (編集->設定->空白を表示。)
他のグラフィカルツールにはおそらく同様のオプションがあります。@ Cottonのanswer + commentは、vimdiffでこれを行う方法を示しています。