結論
- 以下2点が重要
- .gitmodulesを触らない
- オリジナルリポジトリのgit履歴からも削除
方法
- サブモジュール自体を削除する場合は.git/modules/<submodule_name>/も削除する必要がある
- .gitmodulesからも消えないのはgit rm -rでサブモジュールを削除していないから
# サブモジュールを解除
$ git submodule deinit submodule-A
Cleared directory 'submodule-A'
# git履歴から削除(※これ重要で.gitmodulesから消えてくれる)
$ git rm -r submodule-A/
# .git以下からも削除(※これ重要。面倒くさい)
$ rm -rf .git/modules/submodule-A
正しく削除できていない時に発生するエラー
- その1
'submodule-A' already exists in the index
- その2
"submodule" already exists in the index