Gitリポジトリに誤って機密情報をcommit/pushしてしまった場合には歴史から抹消しないとセキュリティリスクを抱えてしまいます。
歴史からの抹消は git filter-branch を使えばリポジトリの書き換えは簡単にできます。
さて、filter-branchで歴史を書き換えた場合にGitHub上のPull Requestはどうなるでしょうか?
検証
こちらのリポジトリで以下の手順を検証
-
config.txt
というファイルの追加と変更Pull Requestをマージ -
git filter-branch --tree-filter 'rm -f config.txt' HEAD --all
で歴史からconfig.txtを抹消 -
git push -f origin --all
でリモートブランチのアップデート
結論
現在積まれているcommitは書き換わりましたが、マージ済みPull Requestのcommitは書き変わらないようです😱
機密情報をプルリク経由でマージしてしまった場合、リポジトリを一度削除するしか無さそうですね...
備考
- GitHub以外のサービスでは検証していないので他のホスティングサービスでは挙動が違う可能性があります