koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

Pull Requestを出している最中に、そのRPのコミットユーザーを強制的に全て書き換えるとFile change画面が確認できなくなります

はじめに

タイトルの問題に遭遇しました。

ただ、自分がGit及びGithubについて、理解が足りないということもあり、問題を一般化することができないのですが、起こったことをまとめたいと思います。

起こった問題

masterブランチとfeature_internationalizationブランチを作成して、後者から前者に対してPull Requestを出しました。

PRがオープンになっている状態で、そのPRに含まれるコミットのコミットユーザーを変更する必要があったために、以下の手順でコミットユーザーを変更しました。

以下のコマンドをmasterブランチとfeature_internationalizationブランチで実行

git filter-branch -f --env-filter \ "GIT_AUTHOR_NAME='new'; \ GIT_AUTHOR_EMAIL='new@example.com'; \ GIT_COMMITTER_NAME='new'; \ GIT_COMMITTER_EMAIL='new@example.com';" \ HEAD

git push -fで、masterブランチとfeature_internationalizationブランチにローカルの変更を反映

そして、Githubで、PRのFile change画面を確認したところ以下のスクリーンショットの状態となり、File changeを確認することができなくなりました。また、出していたPRがcloseされました。

f:id:NMP300:20191106190537p:plain
実際のFile change画面

原因

この件についてGithubのサポートに問い合わせました。

すると、強制プッシュでリモートのリポジトリの履歴を書き換えたため、作成していたプルリクエストの履歴との関連がなくなってしまったようです。

とりあえずの解決方法

以下のようなURLで、File changeを確認することはできます。

https://github.com/リポジトリ名/compare/比較対象のブランチ...比較するブランチ

ただし

closeされたPRをreopenすることはできず、新しいPRを出しても一部のFile changeのみしか確認できません。

教訓

PR中に、コミット全てを強制的に書き換えるようなことは極力しないようにしよう‼️

参考サイト

GitのCommitユーザを修正する方法 - Qiita