如果父存储库有许多子模块。父存储库是否存储子模块的当前提交?
当我在全新安装的父存储库上签出父存储库时,它似乎没有部署子模块的最新版本。
盒子启动时使用的克隆命令是。
git clone --recursive repo_url folder
如果父存储库有许多子模块。父存储库是否存储子模块的当前提交?
当我在全新安装的父存储库上签出父存储库时,它似乎没有部署子模块的最新版本。
盒子启动时使用的克隆命令是。
git clone --recursive repo_url folder
父存储库存储每个子模块的提交哈希,而不是子模块本身的代码。当您递归地克隆父级时,它将克隆子模块直到该提交。这实际上是一件好事,因为您不希望 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
它不存储它,而是只知道哪个提交具有子模块当前所在的位置和位置。检查这个。
要获取最新的子模块,请使用:
git submodule foreach --recursive 'echo `git checkout master`'
git submodule foreach --recursive 'echo `git pull`'
假设您希望所有子模块都在master
分支中。
为了保存状态提交它。