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

问题描述 投票:0回答:1

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

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

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

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

git git-submodules
1个回答
1
投票

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

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

然而,git的机制使它变得不可能。

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

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


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

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

© www.soinside.com 2019 - 2024. All rights reserved.