很容易克隆整个项目及其所有子模块:
git clone --recursive git@github.com:homer/powerplant.git
但是,如何创建一个克隆,其中所有这些子模块都替换为各个子存储库本身的HEAD?优选地,一旦某些东西改变,这可以容易地重复。目标应该是相同整体代码的只读“平面”版本。不需要合并。
如果可以,它将解决我的Launchpad问题,其中bzr
只能导入没有子模块的存储库。
答案 0 :(得分:3)
如果您想从子模块的文件开始而不是以git repos开头,只需执行以下操作:
git clone --recursive git@github.com:homer/powerplant.git
(疯狂回购名称顺便说一句)git config --remove-section submodule.name
你最终会得到你想要的东西,工作树中的子模块文件,但子模块没有被初始化。
您可以使用最新的git submodule deinit
命令,但它也会从工作树中删除子模块的文件。
答案 1 :(得分:0)
您不能直接执行此操作,因为HEAD
永远不会引用子模块。这是一个Git功能,可以防止不必要的依赖更新,因此超级项目在固定的SHA1上引用子模块,可以通过提交(在超级项目中)新的SHA1来更改。
在克隆之后将子模块更新到其上一个修订版很简单:在超级项目中运行以下命令。
git submodule foreach git merge origin/master
git commit -am "updated all submodules to origin/master"
编辑
看起来你想在克隆之后签出子模块,命令是
git submodule update --init --recursive