[小ネタ]GitHubでコミット間の差分をパッチ形式で表示する

GitHubでは特定のブランチ、コミット、タグの差分をパッチ形式で表示する方法ことができます。
2021.05.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

GitHubで特定のブランチ or コミット間の差分をパッチファイルにしたい時ってありますよね?(挨拶) 例えばforce-pushで打ち消されたコミットや削除されたブランチの変更を手元で再現したい時に必要になります(※世の中の人にはあなたが思っているよりもいろいろな事情があるのです)

差分の表示方法

特定のブランチ、コミット、タグ間の差分を表示する方法は公式ドキュメントで紹介されていますが、基本的には以下のURLにアクセスするだけです。

base, otherにはブランチ名、コミットハッシュ、タグ名を指定します。

https://github.com/<org>/<repo>/compare/<base>..<other>

例えば elm/coreのmasterとdevの差分は以下のURLです。

パッチ形式での表示方法

上記の方法だと差分がUIで表示されます。ブラウザで確認するには便利なのですが、変更をパッチ形式で欲しい時もあります。そんな時には上記のURLの末尾に.diff をつけるとパッチ形式で表示できます。

さらに.patchをつけると差分に応じたPRの詳細やコミッターのメールアドレスなどを含む形式で表示されます。

公開リポジトリであればcurlで取得できるのでパイプすればそのまま適用できます。

まとめ

差分の取り込みや確認はcherry-pickやマージでできるよう運用しましょう。