Seperti komentar Sridhar di bawah ini, dari Git1.6.5 +, git clone --recursive
sekarang menjadi alternatif resmi, dijelaskan dalam:
inamiy benar menunjukkan yang git submodule update --init --recursive
perintah, diperkenalkan pada komit b13fd5c , lagi di git1.6.5, oleh Johan Herland ( jherland
) .
Dan IceFire menambahkan di komentar :
Jika Anda ingin membayar hanya satu submodule dari sebuah submodule, maka
git submodule update --init <submoduleName>
inilah caranya.
(jawaban asli yang lebih lama)
Menurut halaman manual
git submodule update --recursive
harus memperbarui semua submodul bersarang. Tetapi bagian init mungkin tidak rekursif.
Bergantung pada versi Git Anda, Anda dapat kembali ke pendekatan "scripting", dengan artikel ini Memperbarui Submodul Git secara Rekursif yang memungkinkan init dan pembaruan rekursif:
#!/usr/bin/perl
use strict;
use Cwd;
init_and_update();
exit;
sub init_and_update
{
my $start_path = cwd();
my %paths;
my $updated;
do
{
my $data = `find . -name '.gitmodules'`;
chomp($data);
$data =~ s/\/\.gitmodules//g;
foreach my $path (split(/\n/, $data))
{
$paths{$path} = '' if($paths{$path} eq '');
}
$updated = 0;
foreach my $path (sort keys %paths)
{
if($paths{$path} eq '')
{
chdir($path);
`git submodule init 2>&1`;
`git submodule update 2>&1`;
chdir($start_path);
if($ARGV[0] eq '--remove-gitmodules')
{
unlink("$path/.gitmodules");
}
$paths{$path} = 1;
$updated++;
}
}
} while($updated);
}