結論

  • 以下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