如何在不更新其工作树的情况下更新git子模块引用?

时间:2017-12-29 22:59:22

标签: git git-submodules

我的存储库中有一些文件占用了大量空间,而其余只是文本文件。因此,我决定将它们保存在单独的git存储库中,以便保持主代码库紧凑,并将其他存储库链接为git子模块。

但是,我不需要git来更新工作树,因为我已经在我的开发机器上安装了它们。我只需要主repo保持对子模块的引用。

一旦我向子模块提交并推送,我该如何更新主要repo指向子模块提交的指针?

根据我的经验,git不允许update没有git submodule init,并且更新工作树。

1 个答案:

答案 0 :(得分:1)

如果我的想法正确,那么您的问题可归结为

  

获取子模块提交的信息而不提取文件

然而,git的机制使其无法实现。

因为没有孤立的提交信息,这些信息基于提交对象,而提交对象又基于文件。

你的机器上有这些文件,但git需要的是提交对象,而不仅仅是文件本身。

因此,在获取提交对象时,您将获得子模块的最新提交信息。没有提取提交信息的事情。

因此,如果要引用最新的子模块提交(或者更改将子模块的更改合并到主存储库中),则必须获取该子模块以获取提交信息,然后添加子模块的最新提交到主要的回购。