Edited at

gitの特定のディレクトリをブランチ毎別リポジトリにする方法

More than 3 years have passed since last update.

baseprojectという名前のリポジトリの中にあるsubprojectというディレクトリを、別のリポジトリとして分離する方法です。

その際、必要なブランチも全部移行します。

まず新しく作るリポジトリ用のディレクトリを作ります。

mkdir ~/subproject

新しく作ったディレクトリに元のプロジェクトをcloneしてやります。

cd ~/

git clone baseproject subproject

git filter-branch --subdirectory-filterを使えば指定したディレクトリに関する情報だけ抽出されます。

-- --allをつけると全てのブランチ情報も一緒に抽出されます。

cd ~/subproject/

git filter-branch --subdirectory-filter subproject -- --all

元のブランチがリモートブランチとして移行できたかを確認します。

git branch -a

移行する必要があるブランチをあらかじめcheckoutしておきます。

git checkout -b origin/feature001

git checkout -b origin/feature002

あとは全部pushするだけ!

git remote rm origin

git remote add origin git@github.com:hoge/subproject.git
git push --all