如何执行git add子模块路径并将暂存区设为特定子模块哈希?
如何指定特定哈希值暂存Git子模块?
如果想直接让暂存区里的子模块指向特定哈希值,不用先在子模块目录检出该版本,直接用git update-index操作索引即可,这是最直接的方式:
执行命令:
git update-index --cacheinfo 160000 <目标哈希值> path/to/submodule其中
160000是Git中子模块条目固定的模式位,必须指定这个值;<目标哈希值>替换成你需要的子模块提交哈希,path/to/submodule是子模块在父仓库里的相对路径。验证结果:
执行完后可以用下面的命令确认暂存区里的子模块版本是否正确:git diff --cached path/to/submodule输出会显示子模块从旧哈希变更为你指定的新哈希。
撤销操作:
如果需要取消这次暂存,执行:git reset HEAD path/to/submodule
这种方法特别适合你提到的场景——拆分大量变更到多个独立PR时,不用频繁切换子模块的分支或检出特定版本,直接在父仓库里指定子模块的目标版本暂存,就能分批次提交不同的子模块版本变更。
内容的提问来源于stack exchange,提问作者julx
相关产品推荐
相关产品推荐

