Git リポジトリ内のディレクトリをサブモジュールに変換する方法
Git サブモジュールはリポジトリ内のリポジトリのようなもので、モジュールのバージョン管理をプロジェクト自体にリンクせずに、外部コード ライブラリや依存関係をプロジェクトに含めることができます。これにより、モジュールが分離されて更新が容易になり、ディレクトリを新しいサブモジュールに変換するのも簡単になります。
Git のサブモジュールとは何ですか?
サブモジュールは、別の Git リポジトリ内に埋め込まれた Git リポジトリです。これにより、独自のバージョン管理を維持しながら、別のプロジェクトのコードを依存関係として含めることができます。
親リポジトリのクローンを作成すると、サブモジュール リポジトリも自動的にクローン作成されます。これは、サブモジュールのコードと Git 履歴がメインのバージョン管理とは別に保持され、ライブラリを使用する複数のリポジトリに対して更新できることを意味します。
サブモジュールの代わりに、ライブラリをパッケージとして NPM、Maven、NuGet などのパッケージ マネージャーに公開することもできます。ただし、これはすべての種類のプロジェクトで機能するわけではありません。プライベート コードを使用している場合は、プライベート パッケージ レジストリを設定する必要があります。これは、単にライブラリのソース コードをサブモジュールとして埋め込むよりも複雑になる可能性があります。 。
ディレクトリをサブモジュールに変える方法
最初のステップは、サブモジュールの新しいリポジトリを作成することです。これは通常、 GitHubなどの Git ホスティング サービス上にありますが、コンピュータ上にローカル リポジトリを作成することもできます。
次に、サブモジュール リポジトリの作成元となるメイン リポジトリの新しいコピーを取得します。
git clone git@github.com:username/repository.git submodule-repo
cd submodule-repo
git filter-branch --subdirectory-filter submoduledirectory -- --all
このモジュール ディレクトリのリモート URL を新しいサブモジュール リポジトリ (通常は「origin」という名前) に変更します。
git remote set-url origin https://github.com/new-repository.git
その後、通常どおり履歴をプッシュできます。
git push -u origin main
新しいサブモジュールの追加
メイン プロジェクトに戻り、サブモジュールを追加します。
まず、親リポジトリからサブモジュールに変換するディレクトリの追跡を停止する必要があります。これは Git のバージョン履歴にまだ存在しており、とにかく新しいモジュール リポジトリに追加しただけです。
rm -rf directory_name
次に、次のコマンドを使用して、Github で作成したサブモジュール リポジトリのリモート URL を追加できますgit submodule add
。
git submodule add git@github.com:username/repository.git directory_name
このコマンドを実行すると、Git は親リポジトリに新しいサブモジュール ディレクトリを作成し、このディレクトリにサブモジュール リポジトリのクローンを作成します。また、モジュール フォルダーの追跡も再開されます。
サブモジュールを更新するには、次のコマンドを使用できますgit submodule update
。
git submodule update --remote submodule_name
コメントを残す