如何在GitHub上上传本地子模块的文件?

3

我在本地机器上有几个项目。创建了一个超级项目,并将不同文件夹中的项目作为子模块添加进去。所有子模块文件都被复制到了超级项目中。文件.gitmodules包含本地url。如果我尝试推送超级项目,我看不到我的子模块文件。

我如何能够推送带有子模块文件(而不是提交)的超级项目到Github上?

P.S. 我想单独处理这些项目并将它们发布为一个仓库。感谢您的答案!

2个回答

3
我如何使用子模块文件(而不是提交)将超级项目推送到Github?
您需要将子模块作为文件夹进行提交,而不是作为子模块提交,这样您将失去对其存储库的所有引用。
子模块只是存储库的提交。当克隆存储库时,git会尝试根据.gitmodules中的url获取子模块 - 子模块的内容不会随着克隆操作一起传输。在GitHub上,子模块仅显示为提交 - 它不包含任何内容。
要保留子模块的内容但停止它成为子模块,请按照此答案中的步骤操作。我提取了该答案中的代码,而不仅仅是链接它,因为这段代码更长,而下面这些就足够了:
git rm --cached submodule_path # delete reference to submodule HEAD (no trailing slash)
git rm .gitmodules             # if you have more than one submodules,
                               # you need to edit this file instead of deleting!
rm -rf submodule_path/.git     # make sure you have backup!!
git add submodule_path         # will add files instead of commit reference
git commit -m "remove submodule"

附注:我希望将项目分开工作并将它们发布为一个仓库。谢谢答复!

如果子模块的仓库在GitHub上,GitHub会自动将它们链接起来,即您可以单击名称或提交以转到该仓库在GitHub上的页面。


0
自从 Git 1.8.5(2013年11月)发布以来:
git submodule deinit yourSubmoduleName
git rm --cached yourSubmodulePath
git add yourSubmodulePath
git commit -m "Remove submodule, add submodule files"

关于 "如何移除Git子模块",请在此处查看更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接