Git サブモジュールを削除するにはどうすればいいですか? なぜできないのですかgit submodule rm module_name
?
ベストアンサー1
最新の Git (2022 年に更新されたインストールでこれを書いていますgit
) では、これはかなり簡単になりました。
- を実行し
git rm <path-to-submodule>
、コミットします。
これにより、 のファイルツリー<path-to-submodule>
と、.gitmodules
ファイル内のサブモジュールのエントリが削除されます。つまり、リポジトリ内のサブモジュールのすべてのトレースが削除されます。
としてドキュメントノートただし、.git
サブモジュールの dir は (modules/
メインプロジェクトの.git
dir のディレクトリ内に) 保持されます。これは、「別のリポジトリから取得することなく過去のコミットをチェックアウトできるようにするため」です。
それでもこの情報を削除したい場合は、 でサブモジュールのディレクトリを手動で削除し.git/modules/
、ファイル でサブモジュールのエントリを削除します.git/config
。これらの手順は、次のコマンドを使用して自動化できます。
rm -rf .git/modules/<path-to-submodule>
、 そしてgit config --remove-section submodule.<path-to-submodule>
。
古いコミュニティ Wiki の説明:
ページからGit サブモジュール チュートリアル:
サブモジュールを削除するには、次の手順を実行する必要があります。
- ファイルから関連するセクションを削除します
.gitmodules
。 - 変更を段階的に実行します
.gitmodules
。git add .gitmodules
- から関連するセクションを削除します
.git/config
。 - 作業ツリーからサブモジュール ファイルを削除し、index:
git rm --cached path_to_submodule
(末尾のスラッシュなし) を追加します。 - サブモジュールの
.git
ディレクトリを削除します。rm -rf .git/modules/path_to_submodule
- 変更をコミットします。
git commit -m "Removed submodule <name>"
- 追跡されていないサブモジュール ファイルを削除します。
rm -rf path_to_submodule
参照:代替手順は以下のとおりです。