メインコンテンツまでスキップ

「Git」タグの記事が1件件あります

全てのタグを見る

· 約2分

特定ディレクトリ配下のコミットのみを抽出して別のGitリポジトリとして管理し直す方法について説明する。

手順

  1. フィルターを使用して履歴を抽出

    • git filter-repo を使って、特定ディレクトリのみの履歴を抽出する。これは git filter-branch の推奨代替ツール。
    • 事前に git filter-repo をインストールしておく。
    pip install git-filter-repo
  2. 一時的なクローンの作成

    • 元のリポジトリをクローンする。
    git clone --no-local --no-hardlinks <元のリポジトリのパス> temp-repo
    cd temp-repo
  3. フィルタリング実行

    • git filter-repo を使用して特定ディレクトリ配下の履歴のみを抽出する。
    git filter-repo --subdirectory-filter subdir
  4. 新しいリポジトリの作成

    • 抽出した履歴を新しいリポジトリに移行する。
    cd ..
    git clone temp-repo new-repo
    cd new-repo
  5. 不要なリポジトリの削除

    • 一時的に作成したリポジトリを削除する。
    cd ..
    rm -rf temp-repo

補足

  • subdir は新しいリポジトリのルートディレクトリになる。
  • git filter-repo を使用する場合、Python 3.5以降が必要。
  • 元のリポジトリをそのまま残したい場合は、クローンを使用するが、元のリポジトリを直接操作しても構わない。

この手順に従えば、特定ディレクトリ配下のコミットのみを新しいリポジトリとして抽出して管理することができる。