⛳
【GitHub】間違って.envをPushした場合の取り消し方法
使用するケース
- GitHubにプッシュ済みの状態で、直後に.envファイルが含まれていることに気づいた
- まだコミット履歴が浅く(複数のコミットに.envが含まれていない)
1. .gitignoreに追加:
- 目的:今後の
.env
ファイルの追跡を防ぐ - タイミング:気づいた時点ですぐに実施
まず、今後のコミットで.envファイルが追跡されないようにするために、リポジトリのルートディレクトリにある.gitignoreファイルに.envを追加。
Next.jsとかframeworkを追加すると気づいたらディレクトリに追加されているのですが、.envは自分で追加しないと漏れてしまう。
.env
2. キャッシュから削除:
- 目的:現在のGitHubリポジトリから.envファイルを削除する準備
- 効果:ローカルの.envファイルは残したまま、Gitの管理から外す
.envファイルをGitのキャッシュから削除します。これにより、次のコミットでリポジトリから削除されます。.gitのキャッシュから.envファイルを削除することは、Gitがそのファイルの変更を追跡しないようにする操作になる。
具体的には、ファイルが既にGitのインデックス(ステージングエリア)に存在している場合、そこから削除し、次のコミットでリポジトリからそのファイルを削除することを意味している
bash
git rm --cached .env
3. コミットとプッシュ:
- 目的:GitHubリポジトリから.envファイルを削除
- 効果:リモートリポジトリから.envファイルが削除される
.envファイルを削除した変更をコミットし、リモートリポジトリにプッシュします。
bash
git commit -m "Remove .env file from repository"
git push origin [branch-name]
注意点
- この手順は直近のコミットや履歴の浅い状態での対応に適しています
- 古いコミット履歴に.envがある場合は
git filter-branch
を使用する必要があります - 直前のコミットだけの問題なら
git reset --soft HEAD~1
の方が簡単です
.envファイルをGitHubリポジトリから安全に削除する手順
.envファイルに機密情報が含まれている:
- GitHub上のコミット履歴から完全に削除する必要がありますのでご注意ください!
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch .env" \
--prune-empty --tag-name-filter cat -- --all
Discussion
これだけだとHistoryで.envの中身が確認できてしまうので今までのコミット履歴から全て削除しないとですかね?
ちゃ様
ありがとうございます!!!誤解のないよう、使用するケースと補足、注意点追加しました!
過去に.envの履歴がある場合がほとんどだと思いますので、コメントのとおりの操作が必要です。
コメントありがとうございました!!🥲🙏
ご対応ありがとうございます🙇🏻♂️