私のエディタは私のソースファイルの行末を変更しています。するとgit diff
、同じ行が2回表示されます(1回は-
と、もう1回は+
と)。目に見える違いはありません。
git diff
この変更が実際に何であったかをどのように表示できますか?
回答:
まず、色付きの出力(withなどgit diff --color
)を使用していることと、空白の強調表示を(eg)で有効にしていることを確認します。
git config color.diff.whitespace "red reverse"
ただし、削除された行のgit
末尾の空白を強調表示するようには見えないため、これはすべての場合に機能するとは限りません。削除した空白を表示するには、単に使用します
git diff -R
比較の「追加」側に空白を配置し、強調表示します。
詳細については、このSOの質問の回答を参照してください。
000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.|
。7dは「}」中括弧です。
次のコマンドで行末の違いを確認できます。
git diff | cat -v
次に、「^ M」はCRLF(DOS)で終わる場合は出力され、LF(Unix)で終わる場合は何も出力されません。
どうやらgitdiffは正しいことをしていて、CRLFの終わりにCRとLFの文字を出力しているようです。ただし、CRはコンソールによって消費されるため、表示されません。cat -vを使用すると、表示することができます。
git diff > somediff && vi somediff
、vimがCRLFを^ Mとしても表示することです。しかし、それcat -v
はきちんとしています。
cat
私が気付いていなかったオプションを私に学ばせてくれました。:-)
空白の変更を確認する1つの方法は、文字ごとに「単語の差分」を実行することです。
git diff --color --word-diff-regex=.
これにより、行内のすべての空白の変更が強調表示されます。取り外した空白はに包まれている[-
と-]
し、中に空白を追加{+
して+}
。
あるいは、アレックスによって提案されたように
git diff --color --ws-error-highlight=new,old
行の終わりにあるすべての空白の変更を強調表示します。
git diff --ws-error-highlight=new,old
変更された行の空白の差分を強調表示します。
グラフィカルな差分ツールを使用すると、変更がより適切に表示されますgit difftool
。試してみてください。
meldを使用し、空白を表示するように設定します。([編集]-> [設定]-> [空白を表示])。
他のグラフィカルツールにも同様のオプションがあります。@ Cottonのanswer + commentは、vimdiffを使用してこれを行う方法を示しています。
git difftool --tool=meld doesn't
メルドを起動することさえできます。リベースが進行中かどうかはわかりません。
git config diff.wsErrorHighlight all