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

时间:2014-01-05 01:51:22

标签: git github git-submodules

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

如何在github上使用子模块文件(而不是提交)推送超级项目?

P.S。我想与项目分开工作,并将它们作为一个回购发布。 谢谢你的回答!

2 个答案:

答案 0 :(得分:1)

  

如何在github上使用子模块文件(而不是提交)推送超级项目?

您需要将子模块作为文件夹提交,而不是子模块,因此您将失去对其存储库的所有引用。

子模块只是存储库的提交。当克隆repo时,git将尝试根据.gitmodules中的url获取子模块 - 子模块的内容不随克隆操作一起提供。在GitHub上,子模块仅显示为提交 - 它不包含任何内容。

要保留子模块的内容但要将其作为子模块停止,请从this answer开始执行以下步骤。我从那个答案中获取了代码,而不仅仅是链接到它,因为它更长,这就是你所需要的:

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"
  

P.S。我想与项目分开工作,并将它们作为一个回购发布。谢谢你的回答!

如果他们的回购在GitHub上,GitHub将有助于链接子模块,即你可以点击名称或提交到GitHub上的回购页面。

答案 1 :(得分: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"

在此处详细了解“How do I remove a Git submodule?”。