LEFログ

:smile

過去の Pull Request の diff を CLI 上で確認する方法(マージコミット)

チーム開発をしていて、特定のマージコミットの 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で良さそうです。

cli.github.com

あるいは、こんな感じで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。