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

无需检出主仓库旧版本,如何获取对应子模块哈希值?

无需检出主仓库旧版本获取对应子模块哈希值的方法

当然有更高效的办法,完全不用费劲检出旧标签!Git在主仓库的每个提交里,其实已经记录了当时子模块对应的提交哈希,你可以直接通过git ls-tree命令读取这个信息:

git ls-tree some_tag submodule

这个命令会输出类似这样的内容:

160000 commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0  submodule

其中第三段的那串哈希值a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0就是主仓库在some_tag版本时,子模块对应的提交哈希。

如果想直接只拿到哈希值,过滤掉多余内容,可以用awk辅助处理:

git ls-tree some_tag submodule | awk '{print $3}'

原理补充

Git把主仓库里的子模块当作一种特殊的commit类型条目存储在版本树中,每个主仓库的提交都会固定记录当时子模块的HEAD状态,所以我们不需要检出主仓库的旧版本,直接查询这个树条目就能拿到对应的子模块哈希值。

另外,你也可以用git show命令查看相关信息,不过输出会包含更多额外内容:

git show some_tag:submodule

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:07:34