git submodule
で他のリポジトリ(以下「サブモジュール」)の内容を埋め込むことが簡単にできるのですが、
ごく稀に追加したサブモジュールを削除したくなる場合があります。
サブモジュールの追加や更新は git submodule add
や git submodule update
で簡単にできるものの、
何故か git submodule rm
サブコマンドはありません。
どうすれば削除できるのでしょうか。
submodule_name='The name of a submodule you want to remove.'
submodule_path="$(git config --file .gitmodules --get "submodule.$submodule_name.path")"
git rm --cached "$submodule_path"
git config --file .gitmodules --remove-section "submodule.$submodule_name"
git add .gitmodules
git commit -m "Remove submodule $submodule_name"
gitリポジトリの各種設定は .git/config
に含まれており、
これを直接エディタで編集することもできますが、git config
で設定内容の読み書きをスクリプトから簡単に行うことができます。
サブモジュールの設定は .gitmodules
に含まれているのですが、
この書式は .git/config
と全く同じなので git config
で読み書きすることができます。