नीचे Git1.6.5 + से श्रीधर टिप्पणी के रूप में , git clone --recursive
अब आधिकारिक विकल्प है:
inamiy कमांड को सही ढंग से इंगित करता है git submodule update --init --recursive
, प्रतिबद्ध b13fd5c में पेश किया , फिर से git1.6.5 में, जोहान हेरलैंड ( jherland
) द्वारा ।
और IceFire टिप्पणियों में जोड़ता है :
यदि आप एक सबमॉड्यूल के केवल एक सबमॉड्यूल की जांच करना चाहते हैं, तो
git submodule update --init <submoduleName>
जाने का रास्ता है।
(पुराना मूल उत्तर)
मैनुअल पेज के अनुसार
git submodule update --recursive
किसी भी नेस्टेड सबमॉडल्स को अपडेट करना चाहिए। लेकिन इनिट भाग पुनरावर्ती नहीं हो सकता है।
Git के आपके संस्करण के आधार पर, आप अधिक "स्क्रिप्टिंग" दृष्टिकोण पर वापस आ सकते हैं, इस लेख के साथ पुनरावर्ती अद्यतन Git सबमॉड्यूल्स जो पुनरावर्ती init और अद्यतन के लिए अनुमति देता है:
#!/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);
}