[Git]あるはずのsubmoduleが空ディレクトリになってる場合の対処法

Submoduleを追加したはずなのに空ディレクトリになっとる!?

あるプロジェクトで、外部ライブラリをSumboduleとして追加したのですが、あるはずのディレクトリの中身が空になっていました。

具体的には、プロジェクトXで外部ライブラリ(ethnam)を"lib/ethnam"という場所にsubmoduleとして配置したときの話し。
cd ~/projext_X
cat .gitmodules

# 結果
[submodule "lib/ethnam"]
        path = lib/ethnam
        url = git://github.com/DQNEO/ethnam.git


# サブモジュールの中身をのぞいてみる
ls lib/ethnam

#(ちゃんと中身が見える!)
ここまでは問題なし。

この後、プロジェクトXをcloneしたプロジェクトYに移動すると、
cd ~/projext_Y
lib/ethnam

#(中身が空)
あ、あれ・・・?

原因と対処法

原因は、projext_Y側で "git submodule init"をしてなかったことでした。
cd ~/project_Y
git submodule init
git submodule update

# サブモジュールの中身を確認
ls lib/ethnam

#(ちゃんと中身が見えた!)

まとめ

あるはずのディレクトリが空のときは、git submodule init して git submodule update しましょう!

参考

Git submodule の基礎
カテゴリ:

人気記事