子模块没有出现在 repo 中

Submodule not showing up in repo

我正在构建一些自定义的 rpm 包,并试图将另一个项目的源代码作为一个子模块包含在内以进行构建。在我的第一个 运行 期间,我添加了包,当我查看 Github 页面时,我可以看到显示链接子模块的图标,但它在错误的位置。

我做了一些更改以将子模块放在我需要的地方(在 /SOURCES 文件夹中)但是当我提交或尝试做任何事情来更新 repo 时我没有看到任何表明子模块是加载到正确的位置。
使用 submodule update 或任何其他相关命令时,我也没有看到任何变化。

我是否应该删除 .gitmodules 文件并重新开始?我担心这会产生不可预见的后果。是否有任何命令告诉 git 检查 .gitmodules 文件并采取相应的措施?

感谢您的帮助。

在使用子模块之前,您必须先初始化,然后才能更新它们。

git submodule add <url> <name>

那么您 .git/config 应该包含以下条目:

[submodule "name"]
    path = extension
    url = <url>

现在你的项目中有子模块,此时你必须在主存储库下初始化和"install"它(它应该将子模块内容克隆到定义的路径)。

git submodule init
git submodule update

现在你们都准备好了。


When I commit or try to do anything to update the repo I am not seeing anything which indicates the submodule is loading in the correct place.

submodule 是一个独立的存储库,因此在子模块文件夹内所做的任何更改在该文件夹外都是不可见的,反之亦然。

在子模块下所做的任何更改都必须在子模块文件夹内单独提交。

我为可能无意中发现此线程的任何其他人找到了解决此问题的方法。在搞乱更新之后,我最终用 git submodule add --force <url> <path> 再次添加了子模块。 --force 选项是必需的,因为 git 正在查看另一个同名模块。这个 link 不知何故被破坏并且没有更新。在这一步 运行 git submodule update 之后,目录被填充并且 link 出现在 git 中心页面中表示更改。

我在以下 link 中找到此信息:

Link

好的。因此,对于你们中的任何一个 运行 在导入一个 空存储库 作为子模块时遇到同样的问题。

对我来说它不起作用只是因为我作为子模块添加的回购是空的,所以我在那个回购中创建了一个文件,推送它,然后重新运行一切。

希望我帮助了某人。