1
假如我是上犯了具有子模块S1的Git获取最新从子模块gitmodule
,有人添加子模块S2在犯下+ 1,现在我不想要移动到一个+ 1,但取(只下载)子模块s2。
这可能吗?
我的Git版本2.1.4是我可以在必要时更新
编辑得到2.10.1.windows.1:简单的脚本我试过了,它有一些问题 - 新里git的文件夹被克隆子模块而不是超级代表的.git /模块文件夹 - 工作目录受到新子模块的污染:
git diff HEAD origin/master .gitmodules 2>&1 | perl -e '
while(<>)
{
if(/^\+\s+path = (.+)/)
{
my $path = $1;
my $line = <>;
if($line=~/^\+\s+url = (.+)/)
{
my $url = $1;
print "$path -> $url\n";
`git clone "$url" "$path"`
}
}
}'
所以这是一个简单的脚本,我为你的第一个方法做了,这里有什么不对吗?因为当我克隆s2时,submodule的'.git'文件夹位于子模块内,而不在超级存储库的'.git/modules'中。编辑:将脚本置于问题中,因为我无法在此处格式化 – tejas
@tejas不打扰第一种方法:它不知道要检出哪个S2的确切版本。使用git worktree做2d方法:它允许你有多个工作树,这意味着你的当前工作树将不会被触及(除了符号链接,它也存在于Windows中,并带有一个简单的结点:'mklink/J' ) – VonC
我真的不需要签出s2,只是试图保存下载时间,当实际检查/子模块更新 – tejas