Git でサブモジュールを削除する

Azhar Bashir Khan 2024年2月16日
Git でサブモジュールを削除する

このチュートリアルでは、git でサブモジュールを削除する方法を示します。

ソフトウェアプロジェクトを開発するとき、私たちはプロジェクトに必要な外部フレームワークとライブラリを使用することがよくあります。これらのフレームワークとライブラリはオープンソースであり、git リポジトリに保持されている場合があります。

このような外部ライブラリのソースコードを、git リポジトリのプロジェクトディレクトリに保持したい場合があります。git のサブモジュール機能を使用すると、個別の Git リポジトリであるこのような外部ソースをプロジェクトの Git リポジトリのサブディレクトリとして保持できます。

その後、プロジェクトに関連しなくなった可能性があるため、このような Git サブモジュールを削除することを決定する場合があります。

例を挙げて説明します。

Git でサブモジュールを削除する

ソフトウェアプロジェクトで作業するとき、ライブラリの外部ソースを使用する必要があることがよくあります。外部ライブラリは、サードパーティまたは別のチームによって開発される場合があります。

このような外部ライブラリは、別の Git リポジトリで追跡できます。

Git のサブモジュール機能を使用して、このような外部 Git リポジトリをプロジェクトの Git リポジトリのサブディレクトリとして組み込むことができます。したがって、別のリポジトリをプロジェクトに複製し、それぞれのコミットを個別に保持できます。

通常、このような外部ライブラリを置き換えたり削除したりする場合があります。私たちのプロジェクトはもはやそのような外部ライブラリを必要としないと感じるかもしれません。

したがって、プロジェクトの Git リポジトリから外部ライブラリを削除することにしました。このために、外部ライブラリの Git サブモジュールを削除する必要があります。

プロジェクトの Git リポジトリにサブモジュール good-ext-lib が存在するとします。ここで、サブモジュール good-ext-lib を Git リポジトリとファイルシステムから削除する必要があります。

サブモジュールを削除するには、次のように Git コマンドを実行する必要があります。

$ git submodule deinit -f path/to/good-ext-lib

$ rm -rf .git/modules/path/to/good-ext-lib

$ git rm -f path/to/good-ext-lib

コマンド git submodule deninit は、サブモジュール good-ext-lib の登録を解除します。git/config ファイルから submodule.$name セクション全体を削除します。また、サブモジュールの作業ツリーを削除します。

.git フォルダーに good-ext-lib サブモジュールパスを指定したコマンド rm -rf は、プロジェクトの .git/modules ディレクトリからサブモジュールディレクトリを削除します。

プロジェクトディレクトリの good-ext-lib サブモジュールのパスを指定したコマンド git rm は、スーパープロジェクト(私たちのプロジェクト)の追跡データを削除します。gitlink エントリを削除します。また、.gitmodules ファイルに存在するサブモジュールセクションを削除し、ファイルをステージングします。

最後に、次のように good-ext-lib サブモジュールの削除をコミットする必要があります。

$ git commit -m "removed submodule good-ext-lib"

したがって、Git のプロジェクトディレクトリから good-ext-lib サブモジュールを削除しました。

したがって、Git でサブモジュールを削除する方法を示しました。

詳細については、をご覧ください-

  1. git-サブモジュール
  2. Git サブモジュールチュートリアル

関連記事 - Git Submodule