はじめに
GitHubに間違えてアップロードしたファイルの履歴を削除するためにgit-filter-repoを使用しました。
この記事ではWindows11でのgit-filter-repoのインストール方法と使い方を自分用も兼ねてまとめます。
WARNING当記事は個人的なメモであり、内容の正確性について十分に確認できていません。ご了承の上、参考程度にご覧ください。
記事の内容は履歴を削除するものであり、一度行うともとに戻すことができない危険な操作が含まれています。実行する場合は自己責任でお願いします。
また、git-filter-repoを使用する際は以下の公式のドキュメントを参照してください。
git-filter-repo
Pythonのインストール
PythonがPCにインストールされていない場合は以下のリンクからインストールしてください。
https://www.python.org/downloads/
git-filter-repoのインストール
以下のリンクからgit-filter-repo本体をDLして「git-filter-repo」(拡張子なし)という名前で保存
https://github.com/newren/git-filter-repo/blob/main/git-filter-repo
IMPORTANTgit-filter-repoはpipのようなパッケージマネージャーでインストールすることもできます。
参考:https://github.com/newren/git-filter-repo/blob/main/INSTALL.md
パッケージマネージャーでgit-filter-repoをインストールした場合はこの記事のコマンドとは異なる可能性があります。
記事中のpython git-filter-repo
の部分はgit-filter-repo
と置き換えて実行すれば問題ないと思います。
履歴から削除するファイルのリストを作成する
今回は複数のファイルの履歴をまとめて削除するためにtxtファイルを使用する方法で行います。
削除するファイルをリポジトリのルートディレクトリからの相対パスで一覧にします。
ここではファイル名をdelete-list.txt
とします。(ファイル名は任意)
IMPORTANTディレクトリの区切りは
/
にする必要があります。(\や¥だと消えない)
エンコードはUTF-8(BOMなし)で保存してください。
編集する際はメモ帳よりもVSCodeのようなテキストエディタを使用することをおすすめします。
file1.txt/path/file2.txt/path/path2/file3.txt
作業準備
現在作業をしているディレクトリと別のディレクトリに移動して対象リポジトリをクローンします。
例:C://develop/exampleで作業している場合はC://develop/に移動してクローン
cd ..git clone [作業対象リポジトリのURL]
上の作業によりC://develop/[リポジトリ名]が作成されます。
cd [リポジトリ名]
ダウンロードしてあるgit-filter-repoをクローンしてきたフォルダにコピーします。
例:C://develop/[リポジトリ名]にgit-filter-repoをコピー
履歴を削除する
コマンドプロンプトで以下のコマンドを実行してgit-filter-repoを実行
python git-filter-repo --invert-paths --paths-from-file delete-list.txt --force
削除できたか確認する
以下のコマンドを実行して何も出てこなければ削除が成功しています。
git log --all -- <削除したいファイル(delete-list.txtに書いたパス)>
リモートリポジトリに反映する
git-filter-repoを実行するとローカルリポジトリに紐づけたリモートリポジトリの情報が消えるため、再度リモートリポジトリを設定します。
git remote add origin [リモートリポジトリのURL]
強制的にプッシュしてリモートリポジトリにローカルリポジトリの内容を反映します。
git push --force --mirror origin
作業後の注意
GitHub からデータを完全に削除するには作業後、以下のリンク先の手順に従ってGitHubのサポートに連絡する必要があります。
https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository#github-%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%AE%8C%E5%85%A8%E3%81%AB%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B