TIM Labs

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

| コメント(4) | トラックバック(0)

問題

git submodule で他のリポジトリ(以下「サブモジュール」)の内容を埋め込むことが簡単にできるのですが、 ごく稀に追加したサブモジュールを削除したくなる場合があります。 サブモジュールの追加や更新は git submodule addgit 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 で読み書きすることができます。

トラックバック(0)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/90

コメント(4)

すごく助かりました!

すげーどうでもいい重箱の隅なんですが,
$ git add .gitmodules を git commit の前に入れた方がより嬉しい感じでした.

おおう.素早い反応ありがとうございます.
これだと,元のsubmodule だった場所の方がコミットされない気がしますが,
そんなことはないんですかね?

コメントする

このブログ記事について

このページは、kanaが2011年3月 1日 00:00に書いたブログ記事です。

ひとつ前のブログ記事は「Mavenから開発しやすいEclipseのTomcatプロジェクトを生成する」です。

次のブログ記事は「Mavenでビルドした成果物にバージョン管理システムのリビジョン番号を含める」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。