如何将子模块添加到 github 存储库

Posted

技术标签:

【中文标题】如何将子模块添加到 github 存储库【英文标题】:How to add sub-modules to github repository 【发布时间】:2017-04-06 19:34:43 【问题描述】:

您好,例如,我正在寻找一种将子模块添加到我的 github 存储库的方法

虹膜

https://github.com/kataras/iris

我试过了

git add *
git add .

然后提交并推送,但文件夹保持为空(灰色)

我想添加这些子模块的原因是因为我想在heroku上部署我的应用程序。

但是由于子模块没有上传到我的 github 存储库中,我无法部署我的 heroku 应用程序,因为它从我的 github 存储库中丢失了它们。

任何关于如何将这些子模块添加到我的仓库的想法将不胜感激。

【问题讨论】:

你看过官方git-scm.com/docs/git-submodule 【参考方案1】:

添加子模块的命令是

git submodule add <your another repo url>

参考git-submodule

【讨论】:

【参考方案2】:

如果你添加一个嵌套的 git repo,你会得到一个灰色的文件夹(gitlink)而无法检索到它的内容。

你需要:

确保该嵌套 g​​it 存储库中没有待处理的更改(所有内容都已提交并推送到嵌套存储库远程 url) git rm --cached nested_repo_root_folder(没有斜线) 完全删除嵌套的 repo 根文件夹及其内容

然后,您可以将该嵌套存储库添加回 full-fledged submodule:

git submodule add -- /url/nested/repo

【讨论】:

@Yoni Rabinovitch,你有解释为什么 git subtree 从长远来看更容易使用吗?【参考方案3】:

你确定你的用例需要使用 git submodule 吗?我建议您改为考虑git subtree。根据将两者与部署到 Heroku 的 repos 结合使用的经验,我可以告诉你 git subtree 更容易长期使用。

【讨论】:

以上是关于如何将子模块添加到 github 存储库的主要内容,如果未能解决你的问题,请参考以下文章

sh 将子模块添加到git项目

将子模块更新为最新的提交

如何在 github markdown 的子模块中添加到文件的相对链接?

Git:将子模块文件检出到单个目录中

如何“git clone”包括子模块?

Git 在哪里存储子模块提交的 SHA1?