我现在正在开发一个项目,其中有一个来自GitHub的子模块。
我直接通过git clone
获取代码,我在子模块中更改了一些内容并尝试将它们推送到GitHub服务器。
但通过这样做,GitHub中的子模块变空。
我搜索互联网,似乎我应该首先推送子模块,但是,当我进入子模块时,做git status
,我意识到Git并不认识我在子模块和所有状态仍然在大项目上。
所以我想知道的是:如何将子模块推送到GitHub并修复它?
我的GitHub帐户应该具有修改大项目和子模块的权限。
答案 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>