git如何将代码推送到github中的子模块

时间:2017-01-27 05:26:44

标签: git github

我现在正在开发一个项目,其中有一个来自GitHub的子模块。

我直接通过git clone获取代码,我在子模块中更改了一些内容并尝试将它们推送到GitHub服务器。
但通过这样做,GitHub中的子模块变空。

我搜索互联网,似乎我应该首先推送子模块,但是,当我进入子模块时,做git status,我意识到Git并不认识我在子模块和所有状态仍然在大项目上。

所以我想知道的是:如何将子模块推送到GitHub并修复它?
我的GitHub帐户应该具有修改大项目和子模块的权限。

2 个答案:

答案 0 :(得分:1)

如果可以,请再次克隆您的GitHub仓库,将其重置为上次有问题推送之前的状态(可能git reset --hard @~1已足够,请与git log核实),然后再次尝试应用修改。

这次,首先在子模块文件夹中添加,提交和推送 然后转到父仓库(您已克隆的GitHub仓库),添加,提交和推送。

答案 1 :(得分:1)

首先检查.gitmodules文件夹中是否有可用的子模块库 它应该显示:

[submodule "sub repo name"]
    path = xx-name
    url = https://github.com/yoursubmodule path

如果它存在,那么子模块中的git命令应该可以正常工作

更新

使用子模块克隆项目

当您克隆这样的项目时,默认情况下您会获得包含子模块的目录,但其中没有任何文件。

您必须运行两个命令:git submodule init来初始化本地配置文件,git submodule update来获取该项目中的所有数据,并检查超级项目中列出的相应提交:

然而,有另一种方法可以做到这一点,这有点简单。如果将 - recursive 传递给git clone命令,它将自动初始化并更新存储库中的每个子模块。

$ git clone --recursive <url>