能否在Git克隆命令中指定子模块要检出的提交?
能否在
git clone --recursive时指定子模块的检出提交? 不行,直接使用git clone MAINREPO --recursive命令时,无法直接指定子模块要检出的提交。该命令会严格按照主仓库中记录的子模块绑定提交哈希,结合.gitmodules的配置来同步子模块。
如果需要让子模块检出特定提交,有两种实用方法:
- 分步操作:
- 先克隆主仓库(不使用
--recursive):git clone MAINREPO - 进入主仓库目录:
cd MAINREPO - 初始化子模块:
git submodule init - 进入子模块目录,切换到目标提交:
cd <子模块路径>,然后git checkout <目标提交哈希/分支/标签> - 返回主仓库,提交子模块的新绑定状态:
cd ..,git add <子模块路径>,git commit -m "更新子模块至指定提交"
- 先克隆主仓库(不使用
- 用
git submodule update指定提交:
克隆主仓库后,执行git submodule update --init --reference <目标提交哈希> <子模块路径>,直接将子模块更新到指定提交。
目前Git没有原生支持在git clone --recursive的单条命令中指定子模块的自定义提交,若需要批量处理,可编写脚本完成克隆后自动切换子模块到目标提交。
内容的提问来源于stack exchange,提问作者maciek
相关产品推荐
相关产品推荐

