coiai Logo
Featured

Git filter-repo 既にコミットしてしまった不要ファイルを履歴から消す方法

Gitでうっかり大容量のファイルや本来コミットしたくなかったファイルを登録してしまった…。

  • ビルド結果やキャッシュが混ざっていた
  • 100MBを超えるファイルをPushしようとしてGitHubに拒否された(今回の私)
  • セキュリティ上問題のあるファイル(APIキーや秘密情報)を誤ってコミット

こうしたファイルは、単に .gitignore を修正して git rm –cached しても、過去のコミット履歴に残り続けます。

今回は git filter-repo(旧 git filter-branch の後継ツール)の紹介です。過去コミットも含めて不要ファイルを完全削除し、リポジトリを“きれい”に書き換えてしまうことができます。

注意点

履歴を改変すると、既存のブランチと互換性がなくなるため、他の開発者と共有している場合は要注意。

• もし既にGitHub等にPushしていたら、force push(–force)でリポジトリを上書きしなければなりません。

• 作業前にバックアップを取っておくことを強く推奨します。

やり方

手順1: git filter-repo をインストール

macOS

brew install git-filter-repo

Windows / Linux

git-filter-repo公式GitHubページ からスクリプトをダウンロードしてパスに配置、あるいはパッケージマネージャ等でインストール。

インストールできたら git filter-repo –help が実行できるか確認してみましょう。

手順2: 不要ファイルを削除する

2-1. 例: 特定のファイルを削除

git filter-repo --path path/to/your_file.ext --invert-paths

• –path: 削除(除外)したいファイルパス

• –invert-paths: 指定したパスを履歴ごと消すオプション

これで過去のコミットからも your_file.ext が完全に消え、存在しなかったことになります。

2-2. ディレクトリごと削除

git filter-repo --path path/to/unwanted_folder --invert-paths

• unwanted_folder 以下のファイルすべてが対象。

2-3. 複数のパスを一度に削除

git filter-repo \
 --path path/to/big_file_1 \
 --path path/to/big_file_2 \
 --invert-paths

改行やバックスラッシュで続けて書けば、複数ファイル・フォルダをまとめて消せます。

手順3: ローカル確認 & force push

filter-repo の実行が終わると、履歴を書き換えた状態がローカルに反映されます。

変更をリモートに反映するには、通常は強制プッシュが必要です。

git push origin main --force

• これでリモート側も「不要ファイルが含まれていない」新しい履歴に上書きされます。

• コラボレーターがいる場合は衝突や再クローンなどが必要になってくるので、事前に相談してください。

サイズで一括削除する

「50MBを超えるファイルをすべて消す」といった雑なやり方をしたい場合は、以下のようなコマンドも便利です。

git filter-repo --strip-blobs-bigger-than 50M

これで50MBを超えるファイルは履歴から抹消されます。

ただし、どのファイルが削除対象になったかを確認してからにするのがおすすめです。

投稿日: 2025年2月16日
カテゴリ: コラム
タグ: git, プログラミング
coiai

coiai

この記事もおすすめ

ポッドキャストを取った後Audiotionですべきこと

ポッドキャストを取った後Audiotionですべきこと

この記事はポッドキャストなどの音声コンテンツを取った後にAuditionで編集する方法について解説しています。 環境 やること 基本的に以下の4つの工程をすると、かなりクオリティアップにつながります! ノイズリダクション 無音部分を選択します。開始地点をi, 終わりをo キーを押すと選択できます。選択できたらエフェクト→ノイズリダクション/リストア→ノイズプリントをキャプチャを押します。 続いて、全体を選択します。cmd, a で全選択になります。エフェクト→ノイズリダクション/リストア→ノイズリダクションを選択します。 以下のようなパネルが表示されうので、ノイズのみをきたりして、削減ちを調整して、良い感じになったら適応ボタンを押します。 シングルバンドコンプレッサ 左のパネルのエフェクトトラックから▶️ボタンを押し、振幅と圧縮→シングルバンドコンプレッッサを選択します。 選択すると下記のようなパネルが開きます。それぞれ、 といった意味があります。設定値は下記画像のようにしています。 設定がめんどくさい場合はプリセットからラジオレベラーを選択してください。 EQ(声をクリアにする) パラメトリックイコライザーを使用します。エフェクト→フィルターとイコライザ→パラメトリックイコライザーを選択します。 私の場合は下記のように設定しています。 無音カット エフェクト→診断→無音をカットをすると左パネルに診断が表示されます。 効果を無音を削除、プリセットをポッドキャストにするとちょうどよくなると思います。設定したら、スキャンボタンを教えて、全て削除で無音がカットされます。 かなりカットされてしまうので、短いCM等に使うのはありかなという感じです。 参考 Adobe 無音カット https://helpx.adobe.com/jp/audition/using/strip-silence.html

MetaStore コンテンツ型のアプリ内課金を実装する

MetaStore コンテンツ型のアプリ内課金を実装する

MetaStoreのコンテンツ型のアプリ内課金を実装する方法についてです。 コンテンツを追加する 右上のアドオンを作成ボタンを押す。 アドオンタイプ 一度購入したら、それ以降は購入しない設定は耐久型を選びます。アプリ内のコインや石など、消耗品は消耗品を選びます。 価格設定 価格設定タブに進むとコンテンツの価格を設定できます。有料のコンテンツをまだ登録したことない場合は支払い情報の設定が住んでいないはずなので、支払い情報の設定が先に必要になります。 DUC データユーズチェックアップ 左メニューの必要条件の中のデータ使用状況の確認を開きます。 例えばIAPでユーザー認識が必要な場合は User ID, ユーザー名が必要な場合は User Profile の追加ボタンを押します。 何に使うかの用途と説明が求められるのでそこに使用用途を記述してください。 ここまで出来たらリクエストを送信ボタンを押します。 このようにデータの取り扱いについて質問されるので答えてください。英語で書いてあるので、なんとなく何が書いてあるか順番にさらっと説明します。 データの使用状況の確認 左サイドバーから必要条件⇒データ使用状況の確認をクリックします。 これが設定されていないと以下の文言のポップアップが表示されます。 読んでくださった方へ 株式会社coiaiでは、Quest向け、PCVR、Vision OS向けの開発も得意としています。新規開発ももちろん、開発途中でメンバーが必要といった場合でも請け負えますので、ご相談ください!

この記事を書いた会社

株式会社coiaiは、「想像できることを美しく実現」を掲げ、XR・Web・アプリ・システム開発およびDX支援を行う会社です。 創業2022年、東京都練馬区に本社を置き、要件のヒアリングからPoC(概念実証)、本番運用まで一貫して伴走します。 まずはお気軽にご相談ください。

商号株式会社 coiai創業2022年1月設立2025年1月23日資本金1,500,000円(設立時点)本社所在地東京都練馬区関町北 3-6-9代表者代表取締役 竹村 啓佑 / 代表取締役 服部 陽良

主なご相談内容

会社概要・役員紹介を見る

詳しい会社情報は会社概要ページでご覧いただけます。

資料請求・無料相談

導入要件のヒアリングからPoC、本番運用まで伴走します。まずはお気軽にご相談ください。

お問い合わせの前に 個人情報保護方針 をご確認ください。