🍣

モノレポから歴史を救い出す

2024/08/17に公開

課題

大きくなったモノレポから特定のファイル群を歴史とともに他のリポジトリに移管したい。巨大なリポジトリをすべてsubtree add するのは歴史が大きくなりすぎるので、避けたい。

TL;DR

git-filter-repo を使う
https://github.com/newren/git-filter-repo

git-filter-repoをインストールする

pip install git-filter-repo

Monorepoをcloneする

git clone ... 

git-filter-repoで特定のディレクトリの歴史以外を捨てる

git-filter-repo --path <歴史を残したいディレクトリ> --path <複数指定可能> --subdirectory-filter <指定したディレクトリがルートになる>

後はsubtreeで他のリポジトリに追加したりする

git subtree add --prefix=<このディレクトリ以下に展開> git@github.com:.....git <branch>

Ref

https://docs.github.com/ja/get-started/using-git/splitting-a-subfolder-out-into-a-new-repository

Discussion