💭
🧼 .env の誤コミット&履歴削除フロー(実践編)
自身でアプリ開発を行っていた際に誤って.envをコミットしてしまった。
その際のトラブルシューティングをここに記載する。
🔹 1. 誤って .env を Git にコミットしてしまう
Firebase の設定情報などを .env に記述
.gitignore に .env が無い状態でコミット → 履歴に残ってしまう⚠️
🔹 2. .gitignore に .env を追加して再コミット
echo ".env" >> .gitignore
git rm --cached .env
git commit -m "Remove .env from repo and add to .gitignore"
→ これで「今後は追跡しないよ」になるが…
履歴には残ってるのでこのままだと危険🧨
🔹 3. Git履歴から .env を完全に削除(bfg or filter-repo)
✅ 実施内容:
GitHubリポジトリを --mirror オプションでクローン専用の裸リポジトリとして取得
git clone --mirror https://github.com/XXX/xxx.git
cd xxx.git
✅ filter-repo を使って .env 削除:
git filter-repo --path .env --invert-paths
※ bfg よりも filter-repo の方が信頼性高&推奨されている💡
🔹 4. リモートを強制上書き(慎重に!)
git remote set-url origin https://github.com/XXX/xxx.git
git push --force --all
→ GitHub 上の履歴も .env 削除された状態に更新される🌟
🔹 5. 安全確認&不要なブランチ/PR削除
GitHub で .env の内容が表示されていないか確認(PRやFileChangedなど)
feature ブランチなどに .env が残っていた場合は 削除 or 再作成
マージ済みPRも履歴保持のリスクがあるため、削除済み確認OK!
🔹 6. ローカルの作業環境を一新
既存の xxx ディレクトリには履歴が残ってるため、そのままでは意味がない💦
mv xxx xxx_old # or rm -rf xxx
git clone https://github.com/XXX/xxx.git
cd xxx
→ これで完全にクリーンなリポジトリに!
🔹 7. 最終チェック
git log --all -- .env
→ 何も出力されなければ ✨ミッションクリア!✨
まとめ(チェックリスト)
- .gitignore に .env 追加
- ローカル&リモートから .env 削除
- APIキー再発行(OpenAI / Firebase)
- GitHub上の .env痕跡なし(Code/PR/Commits)
- クリーンな clone 環境で再構築済み
Discussion