LoginSignup
13
6

More than 1 year has passed since last update.

GitHubのプルリクエストで差分が更新されない時

Last updated at Posted at 2020-01-16

お疲れ様です。

GitHubでプルリクエストが乱立していて、
片っ端からdevelopブランチにマージしていく作業で1日が終わる、そんな日もあります。

プルリクエストのFiles Changedが更新されない・・・

ふと、子ブランチをdevelopにマージしたのに、
孫ブランチのプルリクエストを見ると、子ブランチ分の差分が更新されていないことに気づきました。
孫ブランチに子ブランチをマージしてもダメ、developもマージ済みの状態でした。

参考:GitHubのプルリクエストの差分はどこと比較しているか?(git diffの".."と"..."の違い)
この記事を見たところ、GitHubのヘルプに、以下のように記載されていて、差分はトリプルドットとのことでした。

By default, pull requests on GitHub show a three-dot diff, or a comparison between the most recent version of the topic branch and the commit where the topic branch was last synced with the base branch.

参考: About comparing branches in pull requests

マージしても更新されない状態・・・

しかし、本来、ベースブランチとの差分は孫ブランチの修正しか無い状態なのに、
子ブランチの差分が出てしまっていてどうもおかしい。
トリプルドットでも子ブランチの差分は無くなるはずです。

プルリクエストを作りっぱなしの状態のため、差分がキャッシュされていると思い、
試しにプルリクエストを作り直したところ、期待通り現状のベースブランチとの差分が検出されました。
やはりプルリクエスト作成時のベースブランチをキャッシュしているようです。
ちなみに一時的にプルリクエストのベースブランチをmasterにするなどしてから戻しても、差分が更新されました。

ベースブランチを変更する時のメッセージにヒントが

ベースブランチを変更する時、以下のようなダイアログボックスが表示されていました。

Some commits from the old base branch may be removed from the timeline, and old review comments may become outdated.

つまり

古いベースブランチからの一部のコミットはタイムラインから削除され、古いレビューコメントはoutdatedになる可能性があります。良いですか?

と聞いてきていました。
レビューコメントのために、古いベースブランチをキャッシュしているんですね。
コメントの仕組みを考えてみれば納得でした。

まとめ

  • プルリクエストのFiles changedのベースブランチ情報は保存されている
  • プルリクエストを作成した時点のベースブランチを保存している
  • ベースブランチが更新されてもプルリクエストのベースブランチ情報は更新されない
  • プルリクエストのベースブランチを変更しても情報が更新される
13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6