You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证Git子模块的提交均来自原仓库指定分支?

验证Git子模块所有提交来自原仓库main分支的方法

无需手动遍历每个提交,直接用Git内置命令就能完成验证,步骤如下:

  1. 确保子模块已拉取原仓库的最新分支信息
    在主仓库bar的根目录执行:
git submodule update --remote --init /repo/foo

或者直接进入子模块目录操作:

cd repo/foo
git fetch origin main
  1. 检查子模块所有提交是否都属于原仓库main分支
    在子模块目录执行:
git rev-list origin/main..HEAD

如果该命令没有任何输出,说明子模块本地的所有提交都存在于原仓库的main分支历史中;如果有输出,列出的就是不在main分支中的提交。

也可以用更直观的日志形式查看:

git log --not origin/main --oneline

同样,无输出则验证通过,有输出则显示不符合要求的提交。

另外,如果只是验证主仓库bar中记录的子模块当前版本是否来自原main分支,可以用git merge-base命令:

cd repo/foo
git merge-base --is-ancestor HEAD origin/main

如果命令返回0,说明当前子模块的提交是原main分支的祖先(即属于该分支历史);返回1则说明不在该分支中。


内容的提问来源于stack exchange,提问作者maxisme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:20:30