web-dev-qa-db-ja.com

git-diffの出力の空白の色付け

コードのフォーマットについては、私は一種の純粋主義者です:)。私は非常に頻繁に不要な空白を削除します(wsのみ、行の最後にwsなどの行)。 vimを設定して、そのような線を赤に表示するようにしました。

私の問題は、git-diffを使用すると、次のようなことがよくあることです。

-      else{ 
+      else{

Git-diffで色を付けても、違いは見えません(その特定の状況では、行末で1 wsを削除しました)。 git-diffにwsが赤になっていることを示す方法はありますか? (たとえば、/\s + $/regexpと一致するもの)。

140
radarek

Color.diff.whitespace構成設定を設定する必要がある場合があります。で:

 git config color.diff.whitespace "red reverse"

(とにかくcolor.diffから色の付いたパッチが表示されると言うので、color.uiまたはgit diffautoに設定されていると仮定しています。)

赤で強調表示されている空白エラーのタイプを微調整する場合は、core.whitespaceを変更できますが、blank-at-eolはデフォルトで有効になっているため、おそらくこの例では変更する必要はありません。あなたが言及します。

混乱の原因としては、git diffの出力で、削除された行ではなく、導入された行で空白エラーのみが強調表示されることがあります。 (Update:Paul Whittakerが指摘しているように 彼の答えで 、これはあなたが賛成票を投じるべきです:)、あなたはこれらを見ることができますgit diff -Rでdiffの意味を逆にすることによって。)

git config man page でこれらの設定オプションに関する詳細なドキュメントを見つけることができます。

-Rクラッジを使用したくない場合は、 diff manページのWhiteSpace Error Highlightオプションを使用できます。

--ws-error-highlight =

Color.diff.whitespaceで指定された色で指定された行の空白エラーを強調表示します。古い、新しい、コンテキストのコンマ区切りリストです。このオプションが指定されていない場合、新しい行の空白エラーのみが強調表示されます。例えば。 --ws-error-highlight = new、oldは、削除された行と追加された行の両方で空白エラーを強調表示します。すべては、古い、新しい、コンテキストの省略形として使用できます。

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

または

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

エイリアスを使用する以外に、これを永続的に有効にして設定に保存する方法がわかりません:

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

使用できるようになりました:

git df <file>

変更を赤で表示するには。

Git 2.11(2016年第4四半期) であることに注意してください。このエイリアスは次のように置き換えられます。

git config diff.wsErrorHighlight all

doc on git diff および on git config を参照してください。

159
Mark Longair

git diff -Rを使用して、削除された行を追加された行に変換します。その後、末尾の空白が強調表示されます。

(これは、Markの回答の色設定に従って、既にホワイトスペースのハイライトが有効になっていることを前提としています。この方法の功績は http://git.661346.n2.nabble.com/Highlighting-whitespace- on-removal-with-git-diff-td5653205.html 。)

たとえば、DOSの行末からUnixにファイルを変換すると、git diff -Rは、行の末尾に^M文字(dis)が表示されていることを明確に示します。 -Rなし(および-wなどもなし)では、ファイル全体が変更されたことが示されますが、その方法は示されません。

128
Paul Whittaker

つかいます git diff --color | less -R-Rは、カラー制御コードを人間に優しいものにします。

次に、lessの正規表現検索を使用できます。

/[[:space:]]+$
9
Kelvin

git diffの私のバージョンはすでにこれを行っているようです-git 1.7.4.1があり、color.ui = autoを設定しました。

1
nickgrim