如果父存储库有许多子模块。父存储库是否存储子模块的当前提交?
当我在父存储库的全新安装中签出父存储库时,它似乎没有部署最新版本的子模块。
该框启动的克隆命令是。
git clone --recursive repo_url folder
答案 0 :(得分:1)
父存储库存储每个子模块的提交哈希值,而不是子模块本身的代码。当您以递归方式克隆父级时,它将克隆子模块直到该提交。这实际上是一件好事,因为你不希望git拉出一个较新版本的子模块,因为你的父模块可能与它不兼容。
要更新子模块,您必须明确地执行此操作:
cd submoduledir/
git pull origin master
cd ..
git status
然后提交更新的子模块:
git add submoduledir
git commit -m "Update submodule"
如果要从已更新子模块的主服务器更新本地副本,请执行以下操作:
git pull origin master
git submodule update --recursive
答案 1 :(得分:0)
它不存储它,而是只知道哪个提交子模块的当前位置和位置。检查this。
要获得最新的子模块,请使用:
git submodule foreach --recursive 'echo `git checkout master`'
git submodule foreach --recursive 'echo `git pull`'
假设您希望所有子模块都位于master
分支。
保留状态提交它。