1. ホーム
  2. git

[解決済み] git-diff の出力に含まれる空白文字の色付け

2022-04-20 18:44:07

質問

コードのフォーマットについて、私はある種の純粋主義者です :) 。私は非常に頻繁に不要な空白を削除します(wsだけの行、行末のwsなど)。そのような行を赤に着色して表示するようにvimを設定したこともあります。

問題は、git-diffを使用すると、しばしば次のようなものが表示されることです。

-      else{ 
+      else{

git-diffに色を付けても違いがわかりません(この状況では、行末の1wsを削除しました)。git-diffに赤色に着色されたwsを表示するように指示する方法はありますか?(例えば、/s+$/正規表現でマッチしたもの).

解決方法は?

Git 2.11(2016年第4四半期)使用時 以降であれば、可能です。

git config diff.wsErrorHighlight all

参照 に関するドキュメント git diff について git config .


それ以前のバージョンでは color.diff.whitespace といったコンフィグ設定になります。

git config color.diff.whitespace "red reverse"

(すでに color.diff または color.ui に設定します。 auto から色のついたパッチが見えるとのことですので、そのパッチは git diff いずれにせよ)

もし、赤くハイライトされる空白エラーの種類を細かく調整したい場合は core.whitespace しかし blank-at-eol はデフォルトで有効になっているので、おそらくあなたが言うような例では変更する必要はないでしょう。

混乱の元となる可能性があるのが git diff 空白のエラーは、導入された行だけが強調表示され、削除された行は強調表示されません。( 更新してください。 Paul Whittakerが指摘するように の回答で で差分の意味を反転させると、このように表示されます。 git diff -R .)

これらの設定オプションに関する詳細なドキュメントは git config マニュアルページ

を使いたくない場合は -R を使用することができます。 ホワイトスペースエラーハイライト オプションで diffマニュアルページ .

<ブロッククオート

--ws-error-highlight=

で指定された行のホワイトスペースのエラーを color.diff.whitespace で指定された色で強調表示します。 はカンマ 古い、新しい、コンテキストの分離されたリスト。このオプションが与えられていない場合 は、新しい行のホワイトスペース・エラーだけが強調表示されます。例 --は、削除された行と追加された行の両方のホワイトスペースエラーをハイライトします。 old,new,contextを指定します。

git diff --ws-error-highlight=new,old <file>

または

git diff --ws-error-highlight=all <file>

2.11 より古いバージョンでは、エイリアスを使用する以外に、これを恒久的にオンにして config に保存する方法はありません。

git config alias.df 'diff --ws-error-highlight=all'

これで使えるようになりました。

git df <file>

赤色で表示された変更点を確認する。