求可验证递归子模块存在及正确检出的Git命令
验证递归子模块状态的Git命令
可以使用git submodule status --recursive命令直接验证所有递归子模块的状态,无需复杂的输出解析:
- 如果所有子模块都已正确初始化并检出父仓库指定的提交,命令输出的每一行开头都不会有特殊符号(如
-、+或U) - 若存在未初始化的子模块,对应行开头会有
- - 若子模块检出的提交与父仓库记录不匹配,开头会有
+ - 若子模块存在冲突,开头会有
U
如果需要在CI脚本中自动化验证状态是否正常,可以结合简单的过滤命令快速判断:
if git submodule status --recursive | grep -qE '^[-+U]'; then echo "存在异常的递归子模块" exit 1 else echo "所有递归子模块状态正常" exit 0 fi
如果需要先修复可能的子模块问题再验证,可使用以下组合命令:
# 同步所有递归子模块的远程地址 git submodule sync --recursive # 递归初始化并拉取到父仓库指定的提交版本 git submodule update --init --recursive --checkout # 再次验证状态 git submodule status --recursive
内容的提问来源于stack exchange,提问作者Timmmm
相关产品推荐
相关产品推荐

