リモート開発メインのソフトウェア開発企業のエンジニアブログです

git diff で改行とかを無視したい

背景: フォーマット修正と実際のコード修正が混じる事がある

PR で、ファイルのフォーマットと実際のコード修正(機能追加・バグ修正等)が混じっている場合とかありますよね。もちろん、原則としては別々の PR にすべきなんですが、なかなか原則通りに進まないのが世の常です。

あとは、生成 AI にコードを書かせると、余計なフォーマット修正やコメント修正・削除なども行ってくる場合があります。もちろん、これも AGENTS.md 等で「余計なことすんな」と書く事である程度は対応可能ですが、なかなか理想通りにいかないこともあります。

Moba Pro

やりたい事: git diff でスペース、改行、引用符の修正等を無視したい

スペースの無視だけであれば簡単にできる

スペースの有無、スペース vs. タブ、等の違いであれば、簡単に無視できます。diff でも git diff でも -w を付ければ良いです。

diff -w file1 file2
git diff -w

GitHub の PR でも、w=1 を付けるという方法で空白を無視できます。これは以前から知られていましたが、画面上にボタンもあるんですね。一度も使った事がなかったです。

Ignore white space in code review – The GitHub Blog

改行の有無、引用符の違い等も無視したい

やりたい事は

x = ["a", "b", "c"]

x = [
  'a',
  'b',
  'c'
]

の違いを無視したい、という事です。

解決方法: difft を使う

以下のツールを使って解決しました。

Wilfred/difftastic: a structural diff that understands syntax 🟥🟩

インストール

各種パッケージマネージャーで簡単にインストールできます。

Installation – Difftastic Manual

git から使うには、alias を設定

~/.gitconfig に以下のように記載します。

[alias]
    difft = -c diff.external=difft diff

使い方は、普段の git diff の代わりに git difft を使うだけです。

めちゃ便利です。

まとめ

diffgit diff では -w オプションで空白の有無などを無視できますが、改行を無視することは出来ません。difft コマンドをインストールする事で、その問題を解決できます。Git から使いたい場合には alias を設定すると良いです。

← 前の投稿

2026年でもM1 MacBook Air(2020)は十分使えたという話【MacBook Neoとの比較】

次の投稿 →

コメントを残す