如何使用'git filter-branch'更新子模块的SHA?

时间:2013-02-09 05:29:17

标签: git git-submodules git-filter-branch

假设我有两个Git存储库,A和B. B是A的子模块。

为了简单起见,我们还假设我有一个魔术函数get_sha_B,给定来自A的SHA提交,返回B的所需SHA提交。

如何在repo A上运行filter-branch,以便重写每个repo A提交以指向所需的repo B提交,由get_sha_B返回?

谢谢!

1 个答案:

答案 0 :(得分:3)

想出来!我将在这里回答我自己的问题:

我可以将git update-indexgit filter-branch --index-filter结合使用。

以下是调用update-index来修改子模块的提交SHA的方法:

git update-index --cacheinfo 160000 88e6a302c42840440f9faac73f27efc6a3e0c1a6 pathto/mysubmodule

据我理解,160000是用于识别子模块的Git中的一个神奇数字。