有没有办法使用git命令直接更新索引中的子模块哈希?
如果没有,有没有办法通过在.git目录中的某处修改文本来手动更改它?
我想指向子模块中的特定提交,但我想避免必须进入该子模块,检查提交,将子模块添加到索引,然后检出子模块中的原始提交。 例如:
cd <submod>
git checkout <hash>
cd ..
git add <submod>
cd <submod>
git checkout <originalbranch>
<originalbranch>
可能需要更多命令。当然,这可以全部编写脚本,但由于子模块状态是通过单个哈希在索引中捕获的,因此应该可以使用单个命令来执行此操作,而不需要实际检查提交的长时间不必要的流程
答案 0 :(得分:2)
从几个地方收集有用的信息,这使我找到了一个简单的单行解决方案,完全解决了问题:
git update-index --cacheinfo 160000 <hash> <submod>
请注意,160000是子模块gitlinks的模式。不确定是否需要包含它,但我已经确认它有效。