メモの日々


2017年03月29日(水) [長年日記]

[howto][dev] submoduleを含むGitリポジトリのclone

Gitのサブモジュールの扱い方を覚えられないのでメモ。Gitのバージョンは 1.8.3.1。

git clone後にサブモジュールの内容を取得する

サブモジュールを含んでいるGitリポジトリを手元にコピーすることを考える。普通にgit cloneを実行するだけだとサブモジュールの中身は空。サブモジュールの中身をダウンロードするには

% git submodule update --init --recursive

を実行するのがよさそう。--initは「git submodule init」を兼ねるためのオプション、--recursiveはサブモジュールがネスとしているケースにも対応するためのオプション。

git clone時にサブモジュールの内容を取得する

git cloneと同時にサブモジュールの内容を取得することもできて、そのためにはgit cloneに--recurse-submodulesオプションを追加する。

% git clone --recurse-submodules <repogitory>

最新のサブモジュールの内容を取得する

上記で取得できるサブモジュールの内容は、clone元のリポジトリに記録されているバージョンになる。サブモジュールの最新版を取得する方法は以前メモしているのだけれど、foreachとか使わなくても

% git submodule update --remote

でできそう。今知ったことなのでよくわかってないけど。

参考