我的存储库中有一些文件占用了大量空间,而其余只是文本文件。因此,我决定将它们保存在单独的git存储库中,以便保持主代码库紧凑,并将其他存储库链接为git子模块。
但是,我不需要git来更新工作树,因为我已经将它们放在我的开发机器上了。我只需要主repo保持对子模块的引用。
一旦我向子模块提交并推送,我该如何更新主要repo指向子模块提交的指针?
根据我的经验,git不允许我update
没有git submodule init
,并更新工作树。
如果我的想法正确,那么您的问题可归纳为
获取子模块提交的信息而不提取文件
然而,git的机制使它变得不可能。
因为没有孤立的提交信息,它们基于提交对象,而提交对象又基于文件。
你的机器上有这些文件,但git需要的是提交对象,而不仅仅是文件本身。
因此,在获取提交对象时,您将获得子模块的最新提交信息。不存在仅提取提交信息的事情。
因此,如果要引用子模块的最新提交(或者将子模块的更改合并到主存储库中),则必须获取该子模块以获取提交信息,然后将最新的子模块提交添加到主模块中。回购。