[GitHub] BaseブランチにMerge済みの変更がPull Requestに反映されない時の対処

2021.07.05

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

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

今回は、GitHubでBaseブランチにMerge済みの変更がPull Requestに反映されない時の対処についてです。

Baseブランチの変更がPull Requestに反映されない

developをBaseブランチとするfeature1のPull Requestを作成しました。

さらに並行して、feature1をBaseブランチとするfeature2のPull Requestを作成しました。

ここでfeature1のレビューが完了したため、Pull RequestをdevelopにMergeしました。

その後feature2のPull Requestを見るとMergeしたはずのfeature1の変更が残ったままとなってしまっています。

図にすると、①→①'→①''→②→②’→②''→③の順で操作を行った状況となります。

原因

diffの計算に使用するBaseブランチの情報はPull Request作成時のものが使用されるためのようです。

対処方法

以下のいずれかの方法で対処できます。

方法1. Baseブランチを手動でMergeする

Gitコマンドを利用した方法です。ローカルでfeature2にリモートのdevelopをMergeし、Pushします。

% git checkout feature2
% git pull origin develop
% git push origin feature2

するとfeature1の変更がPull Requestの履歴から消えました。

メリット

  • Pull Requestを作り直す必要がない

デメリット

  • Pull Requestの履歴にBaseブランチをMergeしたログが残る

方法2. Baseブランチを変更して戻す

画面操作を利用した方法です。

Pull Requestタイトル右の[Edit]をクリックします。

Baseブランチの選択でdevelop以外のブランチを選択します。

確認ダイアログで[Cahange base]をクリックします。

同様の操作を行いBaseブランチを再度変更して元のdevelopに戻します。

するとfeature1の変更がPull Requestの履歴から消えました。

メリット

  • Pull Requestを作り直す必要がない

デメリット

  • Pull Requestの履歴にBaseブランチを変更したログが残る

方法3. Pull Requestを作り直す

feature2のPull Requestを単に作り直しすことによっても対処が可能です。方法2、3に比べて手間は大きい気がします。

メリット

  • 履歴のきれいなPull Requestが作られる

デメリット

  • MergeされずにcloseされたPull Requestのゴミが残る
  • コメント等は書き直し

おわりに

GitHubでBaseブランチにMerge済みの変更がPull Requestに反映されない時の対処についてでした。お好きな方法をどうぞ。

参考

以上