💭

🧼 .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