[GitHub] Compareブランチのうち一部のマージコミットのみをマージ対象としたPull Requestを作る

2021.09.07

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

こんにちは、CX事業本部 IoT事業部の若槻です。

今回は、GitHubでCompareブランチのうち一部のマージコミットのみをマージ対象としたPull Requestを作る方法を確認してみました。

何をしたいのか

下記のように複数のマージコミットが作成されたブランチがあります。

このCompareブランチ(develop)の変更のうち、#2(a1a3d61)のマージコミットまでの変更のみをBaseブランチ(main)にマージしたいです。

方法

下記のコマンドを実行して、指定のマージコミット(a1a3d61)までの変更を含んだブランチを作成します。

$ commit=a1a3d61 //対象としたいマージコミットのコミットID
$ git fetch origin develop //Compareブランチのfetch
$ git checkout -b release-to-main-from-${commit} ${commit} //マージコミットをベースにブランチを作成
$ git push origin HEAD //リモートにPush

GitHubのコンソールで「main<-release-to-main-from-${commit}」のcompareを取ると、#2(a1a3d61)のマージコミットまでの変更のみマージ対象としたPull Requestが作成できるようになっています。

「ベースブランチ <- コミットID」のCompareからはPull Requestを作成できない

一方で、「ベースブランチ <- コミットID」のCompareを取った場合は、Pull Requestを作成することが出来ませんでした。(作成メニューが表示されない)

Pull Requestの作成はブランチ間でのCompareでのみ行えるようです。

ちなみに、上記のような「ベースブランチ <- コミットID」のCompareの画面は下記のようにURLを指定すれば開けます。

https://github.com/<アカウント>/<リポジトリ>/compare/<ベースブランチ名>...<コミットID>

おわりに

Compareブランチのうち一部のマージコミットのみをマージ対象としたPull Requestを作る方法を確認してみました。

案件の開発で、すぐにマージしたい変更とまだマージしたくない変更が同じブランチ内に混在してしまった際に、今回の方法が役に立ちました。

参考

以上