Gitで行末の空白を検査する|git diff –checkとステージ済み変更の確認

  • 公開:2026.10.08
  • 更新:2026.10.08
  • 開発

コミット前に差分を読み直していても、行末の空白は見落としがちです。Gitには、変更に含まれる空白の問題をまとめて知らせる git diff --check があります。ただし、git add の前後で検査する場所が変わるため、何も表示されないのにコミット予定の内容には空白が残っている、ということも起こります。

ここではWindowsのPowerShellから、作業中の変更とステージ済みの変更を検査する方法を紹介します。Git for Windowsが使える環境で、目的のリポジトリのフォルダーを開いて進めてください。

ステージ前の変更を検査する

まだ git add していない編集内容は、次のコマンドで調べられます。

git diff --check
$LASTEXITCODE

たとえば sample.txt の2行目に second と書き、その後ろに空白を2個追加すると、次のような表示になります。

sample.txt:2: trailing whitespace.
+second  
2

sample.txt:2 はファイル名と行番号、trailing whitespace は行末の不要な空白を表します。+ で始まる行が差分の追加行です。エディターで空白の表示を有効にすると、見えにくい末尾の空白を探しやすくなります。

$LASTEXITCODE は直前の外部コマンドの終了コードです。この例では 2 でした。自動処理では「2だけが問題」と固定せず、0以外なら表示内容を読んで原因を判断してください。問題が見つからない場合は検査の出力がなく、終了コードは 0 になります。

ステージ済みの変更を検査する

git add 済みの内容を調べるときは、--cached を付けます。次のコミットに入るステージの内容と、直前のコミットを比較します。

git diff --cached --check
$LASTEXITCODE

ステージに入れた直後は、作業ファイルとステージの内容が同じになります。そのため、通常の git diff --check が何も表示しなくても、git diff --cached --check では問題が見つかることがあります。コミット前の確認には後者を使うと、追加済みの内容を見落としにくくなります。

修正したファイルをステージに入れ直す

エディターで空白を削除して保存しても、ステージに入っている古い内容はそのままです。修正したファイルを指定して追加し、再検査してください。ここでは sample.txt を例にしています。

git add -- sample.txt
git diff --cached --check
$LASTEXITCODE
0

git add は指定したファイルの現在の内容をステージに入れます。部分的な変更だけをステージしていた場合は、保存済みの変更全体が追加される点に注意が必要です。意図した範囲だけを追加したいときは、使っているエディターなどの部分ステージ機能で範囲を選び直してください。

何も表示されないときに検査範囲を見直す

未追跡の新しいファイルは、通常の git diff --check では検査されません。まず状態を表示し、コミットに含めるファイルを確認すると状況がつかめます。

git status --short

行頭の ?? は未追跡です。追加したいファイルだけをステージに入れてから、git diff --cached --check で検査してください。検査のために無関係なファイルまでまとめて追加する必要はありません。

検出する空白の種類は core.whitespace の設定で変わります。既定では、行末の空白や、行頭のインデントで空白の直後にタブがある場合などを調べます。--check は競合マーカーの混入も知らせますが、構文や処理の正しさを検証するコマンドではありません。終了コードが0でも、コードのテストと差分の内容確認は続けて行ってください。

--exit-code は差分の有無を終了コードで知らせる別のオプションで、--check とは併用できません。正しい編集で差分があれば、--exit-code は1を返すことがあります。空白の問題を探す目的なら、--check とその出力を使うと意味を取り違えずに済みます。

出典:Git公式:git diff、Git公式:core.whitespace。