DESIGN / CODE / INFRA / AI

解説

長い一行の変更を見つけたい:Gitのword-diffで文字単位に比べる

文章の数字を一か所だけ直したのに、差分では長い一行全体が削除・追加になった。そんなときは、通常の行単位の差分に加えて、行の中の変更を読む表示を試してみよう。

長い一行の変更を見つけたい:Gitのword-diffで文字単位に比べる
保存リストを見る →
この記事の道しるべ 5項目

文章の数字を一か所だけ直したのに、差分では長い一行全体が削除・追加になった。そんなときは、通常の行単位の差分に加えて、行の中の変更を読む表示を試してみよう。

Gitのword-diffは、変更の見せ方を変えるもの。元ファイルを編集したり、変更をコミットしたりする操作ではないよ。今回は自分で作った練習用テキスト二つを比べる。実際の原稿や運用リポジトリは使わなくて大丈夫。

練習用の二つの文を用意する

新しい空のフォルダーへ、before.txtとafter.txtを用意する。前者に「受付は9時からです。」、後者に「受付は10時からです。」と書き、それぞれ一行で保存する。

ターミナルでそのフォルダーへ移動し、次を入力しよう。

git --no-pager diff --no-index --no-color --word-diff=plain --word-diff-regex=. -- before.txt after.txt

--no-indexは、Gitの追跡状態ではなく二つのパスを比較する指定。--no-colorで色を使わず、--word-diff=plainで削除と追加を記号で表示する。--word-diff-regex=.は文字ごとの比較として扱う指定だよ。

編集部が隔離した練習フォルダーで実行したとき、本文部分は次の表示になった。

受付は[-9-]{+10+}時からです。

[- -]に囲まれた部分が削除、{+ +}が追加。一行全部を読み直すより、数字が変わったことに目を向けやすいね。この例では差分があるため終了ステータスは1だった。コマンドの終了番号だけで、実行に失敗したとは判断しないでね。

日本語では既定の区切り方に気を付ける

word-diffの既定は空白で単語を分ける。空白をあまり使わない日本語では、思ったより広い範囲が変更として表示される場合がある。今回の文字単位指定は、その見え方を細かくするためのものだよ。

ただし、正規表現に一致しない部分は差分を探す際に無視される。独自の正規表現を追加して、重要な文字まで比較から外してしまわないようにしよう。改行や空白の確認には通常の差分も残したいね。

実際のリポジトリでは比較対象も選ぶ

未ステージの変更を見るなら、リポジトリの中で次の形にする。

git --no-pager diff --no-color --word-diff=plain --word-diff-regex=. -- path/to/article.md

ステージ済みの変更を見る場合はdiffの後へ--cachedを加える。どちらも、コミット同士の比較とは対象が異なる。迷ったときは作業中とステージ済みの差分へ戻って、何と何を比べるか確認しよう。

記号だけで承認しない

元の文章に[- -]や{+ +}が含まれていると、plain形式は区切り記号を特別に逃がさないため、表示が紛らわしくなる。通常のgit diffや元ファイルも一緒に読み、数字の単位、否定、対象条件が変わっていないか確認してね。

練習をやり直すときは、二つのテキストを最初の文へ戻せばよい。比較コマンドそのものはファイルの内容を変更しない。ブラウザで動かす作例ではなく、ターミナルで入力・出力を確認する練習だよ。

参照した公式資料

確認日:2026年10月26日。

参考・出典

公開と変更の記録
  • :初回公開

日時は日本時間です。記載のある変更は、確認できた編集記録に基づきます。更新日の違いだけから変更内容を推測して載せることはありません。

更新・訂正の方針 →

みんなのコメント 0

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。