チーム開発をしていて、特定のマージコミットの diff のみを手元で確認したいときがあります。
言い換えると、過去の GitHub の PR の差分だけを表示したいときです。ブラウザ上で見ることはできますが、CLI でも確認したいときがたまにあります。
というわけで方法を調べました。
まず PR 番号で検索を掛けます。--mergesオプションを使ってマージコミットのみを探します。
git log --merges --grep="#11111"
するとこんな感じで対象のマージコミットが見つかります。
commit hogehogehoge (main)
Merge: foo bar
Author: LEF <777777+hoge@users.noreply.github.com>
Date: Tue Feb 25 22:36:59 2025 +0900
Merge pull request #11111 from lef237/title
Title
あとはマージ前の親コミットと、対象のコミットを^を使って比較します。
git diff hogehogehoge^ hogehogehoge
これだけ! 便利なのでおすすめです。🐘
追記(2025-05-29)
よくよく調べると他の方法もあることが分かりました。
ghコマンドが使えるなら、gh pr diff 12345で良さそうです。
あるいは、こんな感じでgitのaliasを設定するのも手です。
ghに依存しないですし、作業が簡単になります。オススメ!
prdiff = "!f() { \ sha=$(git log --merges -E -n1 \ --grep=\"^Merge pull request #$1([^0-9]|\\$)\" \ --format=%H); \ test -n \"$sha\" && git show -m --color \"$sha\"; \ }; f"
使い方はgit prdiff 12345でOK。