git直接添加子模块哈希

时间:2015-06-02 14:55:28

标签: git git-submodules git-add

有没有办法使用git命令直接更新索引中的子模块哈希?

如果没有,有没有办法通过在.git目录中的某处修改文本来手动更改它?

我想指向子模块中的特定提交,但我想避免必须进入该子模块,检查提交,将子模块添加到索引,然后检出子模块中的原始提交。 例如:

  1. cd <submod>
  2. git checkout <hash>
  3. cd ..
  4. git add <submod>
  5. cd <submod>
  6. git checkout <originalbranch>
    • 以编程方式确定<originalbranch>可能需要更多命令。
  7. 当然,这可以全部编写脚本,但由于子模块状态是通过单个哈希在索引中捕获的,因此应该可以使用单个命令来执行此操作,而不需要实际检查提交的长时间不必要的流程

1 个答案:

答案 0 :(得分:2)

从几个地方收集有用的信息,这使我找到了一个简单的单行解决方案,完全解决了问题:

git update-index --cacheinfo 160000 <hash> <submod>

请注意,160000是子模块gitlinks的模式。不确定是否需要包含它,但我已经确认它有效。