1. ホーム
  2. git

Git でサブツリーを履歴付きでエクスポートする

2023-10-29 20:18:04

質問

Git リポジトリの中にフォルダがあり、そのフォルダを独自のリポジトリに移動させたいと思っています。そのフォルダの履歴をフォルダと一緒に移動させることは可能でしょうか。

私はこれまで、単に git rm -r --cached subfolder/ を実行し、その後 git init をサブフォルダ上で実行します。しかし、履歴は新しいリポジトリにインポートされません。

どのように解決するのですか?

例として git-filter-branch(1)

あたかもfoodir/がプロジェクトのルートであったかのようにリポジトリを書き換え、その他の履歴をすべて破棄すること。

git filter-branch --subdirectory-filter foodir -- --all

<ブロッククオート

このようにして、例えばライブラリのサブディレクトリをそれ自身のリポジトリにすることができます。 filter-branch オプションと revision オプションを分ける -- と、すべてのブランチとタグを書き換える --all に注意してください。