😰

【Git】リモートリポジトリに誤って上がってしまった環境変数情報などをコミットログから削除する

2022/01/24に公開

緊急事態?!.envをリポジトリに載せちゃった

本来、環境情報を含めた秘匿情報はプライベートリポジトリだとしても万人が見える環境に乗せてしまうのは、情報漏洩のきっかけになるのでリポジトリには乗せてはいけないものです。

しかし、人間だもの。間違いはあります。

今回は、そんな緊急事態時の対応を載せます。

まずは、深呼吸をしてください。

落ち着きましたか?では、話を進めましょう。

対応方法

※ もしチーム開発なのであれば、まずは上長に相談しましょう。絶対です。場合によっては数週間とかの作業が飛びます

機密データをリポジトリから削除する - GitHub ヘルプ

機密情報についてはGitHubのヘルプにも掲載がされています。今回は.envにスコープして対応を進めていきます。

# gitの全ての履歴から.envについての記録を抹消します。
git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch ./.env" \
  --prune-empty --tag-name-filter cat -- --all

# 再発防止の為に、.gitignoreに.envを記載しましょう。
echo ".env">> .gitignore

# 変更を加えた.gitignoreをステージに追加します。
git add .gitignore

# .gitignoreをコミットしましょう。メッセージは適当に
git commit -m ".env to .gitignore"

# 抹消した履歴で強制上書きを決行します。
git push origin --force --all
git push origin --force --tags

ドキュメントでは、このあとサポートに連絡してGitHub上でキャッシュされているビューと、プルリクエストでの機密データへの参照を削除するよう依頼するとありますが、今回はプライベートリポジトリのお話だったのでよしとします。

Discussion