如何使git clone --recursive A B使用A中的子模块存储库?

4
似乎如果项目A有远程URL的子模块,那么“git clone --recursive A B”命令将强制从远程URL拉取每个子模块的副本。有没有一种方法可以让Git从A中的副本克隆子模块而不是从远程存储库中拉取?
我想我可以做类似以下的操作:
git clone A B
cd A
git submodule --quiet foreach 'echo [submodule \"$path\"]\\n path = $path\\n url = $toplevel/$path ' > ../B/.gitmodules
cd ../B
git submodule sync
git submodule update --init --recursive
git checkout .gitmodules
cd ..

有没有更简单的方法?
1个回答

1

一切都是本地的吗?

cp -r A B

[回复评论]

如果 A 是脏的,那么:

   (cd A; git stash)
   cp -r A B
   (cd B; git stash drop)
   (cd A; git stash apply)

是的,那很好,但如果A存储库是脏的,它也会复制本地更改到存储库。但是,如果A是干净的,那看起来是一个不错的解决方案。 - Jason Grout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接