4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.envをpushしてしまったので、GitHub上から完全消去したい話

Last updated at Posted at 2025-04-30

状況

テストのために、.env.testを用意していたが、.gitignoreに追記していたのを忘れたため、リモートリポジトリに上げてしまった。

したいこと

  • リモートリポジトリにある.env.testを消したい。
    しかし、ローカルリポジトリには残しておきたい。

  • (2025/4/30追記) コミットの履歴から.env.testを消したい。

解決策

1. まずは.gitignoreに以下を追加します:

.gitignore
*.env.test

2. ローカルリポジトリの.env.testをGitの追跡から削除

.gitignoreは、「まだGitに追加されていないファイルを無視するもの」で、一度Gitに追加されているファイルを無視はできないので、追跡対象から外す必要があります。

.bash
git rm --cached .env.test

ローカルリポジトリのファイルは残してリモートリポジトリのファイルのみを消したいときは--cachedを付ける。

3. コミットして反映

.bash
git commit -m "次回以降無視されます"
git push

結果

  • .env.test は GitHub 上から削除される
  • ローカルには .env.test がそのまま残る
  • 次回以降、.env.test の変更や追加も Git は無視される

追記(2025/4/30):GitHub上から完全削除をするために…

これで確かにリモートリポジトリからは削除されるのですが、過去のコミット履歴から.env.testのファイルの中身を参照できてしまいます。完全削除するにはコミットの履歴から.env.testを削除し、履歴を書き換える必要があります。

まだだ、まだ終わらんぞ…

方針

GitHub 提供するツール「BFG Repo-Cleaner」を使う

※BFG Repo-Cleanerとは

BFGは、Gitリポジトリの履歴から不要なデータを取り除くための、
git-filter-branchのシンプルで高速な代替ツールです。

対応できる主な用途:

  • 巨大なファイルの削除
  • パスワードや認証情報などの機密データの削除

https://rtyley.github.io/bfg-repo-cleaner/ より引用

コミット履歴から削除する手順

0. 前提条件

1. 対象リポジトリを mirror モードでクローン

.bash
git clone --mirror https://github.com/yourname/repo-example.git

すると、repo-example.gitというフォルダができます。
ちなみに、mirrorモードとは、履歴の書き換えや BFG 実行時に必要な特殊モードでブランチ・タグ・リモートの設定を含む完全なコピーをします。通常の開発では使用しません。

2. BFG Repo-Cleanerをダウンロード(初回のみ)

.bash
wget https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar -O bfg.jar

3. .env.test を履歴から削除

.bash
java -jar bfg.jar --delete-files '.env.test' study-record.git

4. Git履歴をクリーンアップ

.bash
cd repo-example.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive

5. GitHub へ強制 push

.bash
git push --force

これにて履歴から削除されました。チームなどほかの開発者もいる場合ローカルリポジトリを再クローンする必要があることを共有してください。

まとめ

いや、ほんとに気を付けましょう…

参考

https://git-scm.com/docs/gitignore
https://rtyley.github.io/bfg-repo-cleaner/

4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?