假设我正在提交具有子模块s1
的a并且有人在提交a + 1中添加了子模块s2,现在我不想移动到+ 1但是获取(只需下载)子模块s2。
这可能吗?
我的git版本是2.1.4如果需要更新,我可以获得2.10.1.windows.1
编辑:我试过的简单脚本,它有一些问题 - .git文件夹位于新克隆的子模块中,而不是在super rep的.git / modules文件夹中 - 工作目录被新的子模块污染:|
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"`
}
}
}'
答案 0 :(得分:0)
这可能吗?
不完全是:你可以show the content of the latest .gitmodule file:
git fetch
git show origin/master:./.gitmodules
这将给你第二个子模块s2的url,但不是它的SHA1。
如果这就足够了,你可以在你自己的仓库(嵌套的git仓库)中克隆它。
如果你可以升级到latest Git for Windows(2.11或2.12),我会使用git worktree
command:
a+1
提交(使用上述git worktree
命令),并在该单独的工作树中运行git submodule update --init
,a
')到s2的符号链接,在正确的SHA1上正确检出这样,您不会移动当前的回购,但仍会从s2
的实际子模块内容a+1
中受益。