Gitのサブディレクトリを新しいリポジトリに分割する方法
まず、git-filter-repoをインストールします。依存関係のないPythonスクリプトです。
インストールは簡単です。スクリプトをPATHの通った場所に置くだけです。私の場合は次のようにしました。
curl "https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repo" -o ~/.local/bin/git-filter-path重要なのは、git-filter-repoを実行すると、リポジトリ内の他のすべてのファイルがサブディレクトリの内容で置き換えられることです。データを失わないよう、リポジトリの新しいコピーで操作してください。
リポジトリが次のような構成になっているとします。
🦄 ls -l
.rw-r--r-- ellie staff 0 B Mon Jul 29 14:13:39 2024 LICENSE
.rw-r--r-- ellie staff 0 B Mon Jul 29 14:13:34 2024 README.md
drwxr-xr-x ellie staff 64 B Mon Jul 29 14:13:35 2024 src/
drwxr-xr-x ellie staff 64 B Mon Jul 29 14:13:43 2024 subdir/ここで、subdirの内容を独立したリポジトリにしたいとします。
次のコマンドを実行します。
git filter-repo --subdirectory-filter subdirコミットメッセージを書き換える
私は普段からConventional Commitsに従っているので、次のようにスコープを付けたコミットがたくさんありました。
feat(subdir): do a thingsubdirが独立したリポジトリになった今では、こうしたコミットは少し奇妙に感じられます。整えておきましょう。
git filter-repo --message-callback '
return re.sub(b"\(subdir\)\n", b"", message, flags=re.MULTILINE)
'記事をランダムに読む