How to split a Git subdirectory into a new repo

Ellie Huxtable

Gitのサブディレクトリを新しいリポジトリに分割する方法

原文は Ellie Huxtable により に公開されました。 このブログを購読する

まず、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はリポジトリ内の他のすべてのファイルをsubdir内のファイルで置き換えます。データの損失を避けるため、リポジトリのフレッシュなコピーで作業してください。

リポジトリが次のようになっていると想像してみましょう

🦄 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 thing

subdirが独立したリポジトリになった今、これらのコミットは少し違和感があります。きれいに整えてみましょう!

git filter-repo --message-callback '
      return re.sub(b"\(subdir\)\n", b"", message, flags=re.MULTILINE)
      '

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント