Git Filter Repo

高度な Git

Amanda Crawford-Adamo

Software and Data Engineer

git filter-repo とは?

git filter-repo コマンド

git filter-repo

Git の履歴を高速かつ安全に書き換えるツール。

  • ファイルやディレクトリのリネーム
  • すべてのブランチに同時適用

用途

  1. 機密情報の削除(例: パスワード、トークン)
  2. 不要ファイルの整理
  3. リポジトリ構成の再編成
  4. リポジトリサイズの削減
高度な Git

Filter-Repo の手順

  1. pip で git filter-repo をインストール

    pip install git-filter-repo
    
  2. 全コミットから secrets.txt を削除

    git filter-repo --path secrets.txt --invert-paths
    

Filter-Repo 関連オプション

--path: 対象とするパスを指定

--invert-paths: --path で指定した以外のすべてを対象

高度な Git

Filter-Repo の結果

出力

  Parsed 150 commits
  New history written in 0.10 seconds; now repacking/cleaning...
  Repacking your repo and cleaning out old unneeded objects

重要な影響

  • すべてのブランチとコミットが更新される
  • すべてのコミットハッシュが変わる
  • この後は force push が必要
  • メンバーはリポジトリを再クローンする必要あり
高度な Git

filter-repo を使う場面

ユースケース

  • 機密データの除去(例: パスワード)
  • 膨らんだリポジトリの整理
  • 全コミットにわたるファイルの改名・再配置

ヒント

  • 実行前に必ずバックアップを作成
  • 履歴を書き換える前に共同作業者と調整
高度な Git

演習に進みましょう

高度な Git

Preparing Video For Download...