如何更新历史被重写的git子模块。

3

假设我已经设置了一个git子模块,并且上游提交历史已被重写(例如执行了rebase squash操作)。

假设我子模块的head指向的提交已不存在。因此,我想将子模块repo的head哈希设置为当前的head。我该怎么做?


只是提醒一下,您的子模块所设置的提交仍然存在。如果您想要防止它被垃圾回收(大约在九十天后),您可以使用标签或将其合并到“保留历史记录”分支中,或者以其他方式添加自己的引用。 - jthill
1个回答

2
您可以直接进入子模块,执行git fetch命令并切换到所需的HEAD即可。
cd mysubmodule
git fetch
git checkout origin/abranch

然后你回到父仓库,添加并提交该新的子模块 SHA1 项

请注意,您还可以转换子模块以跟随分支的最新提交
在这种情况下,只需执行以下操作:

git submodule update --remote

足够了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接