たまに使う機会があると毎回忘れて調べるハメになるので、ここに備忘録を残しておきます。
サブモジュールの追加
git submodule add <リポジトリのURL>
サブモジュールのステータス確認
git submodule status
以下の情報が確認できます:
- サブモジュールが指すコミットのハッシュ値
- サブモジュール名
- サブモジュールが指すブランチ名(またはタグ名)
サブモジュールの削除
git submodule deinit <サブモジュール名>
git submodule rm <サブモジュール名>
git submodule deinit
実行直後は目立った変化がありませんが、git submodule status
でステータスを確認するとハッシュ値の前に-
が付いていることが確認できます。
その後git rm <サブモジュール名>
を実行すると、git submodule status
のリストからサブモジュールが消えます。
サブモジュールの実ファイルを取得
git submodule update --init --recursive
トラブルシューティング
git submodule status
で先頭に-
がついている
git submodule deinit <サブモジュール名>
直後の状態です。サブモジュールの削除がステージングエリアで保留になっているような状態というイメージで良さそうです。
サブモジュールを復活させたい場合は
git submodule update --init --recursive <サブモジュール名>
サブモジュールをそのまま削除したい場合は
git rm <サブモジュール名>
まとめ
gitのサブモジュールは少しややこしいですね(自分だけ?)。コマンド体系を忘れたり、.git/
内部の状態を把握できなくなってしまうことが何度もありました。
この備忘録が他の人にも役立てば嬉しいです。
筆者について
フォローしていただけると励みになります!
Twitter: https://twitter.com/_matoruru
GitHub: https://github.com/matoruru