我在heroku上托管了一个包含子模块的应用程序。子模块包含多个子模块。子模块的形式为http地址到github repo。
app
|- submodule1
|- other dirs
submodule1
|- submodule2
|- submodule3
|- other dirs
我在几个sobmodules中进行了更改然后提交了所有内容(包括子模块)并推送到github。我可以验证,子模块指向正确的提交,即可以通过git clone --recursive ...
获得回购。
在我推送到github之后,我推到了heroku。应用程序本身已更新,但子模块保持不变(即使它们被提交并推送到github)!
.gitmodules
的示例:
[submodule "src/main/java/runtime"]
path = src/main/java/runtime
url = https://github.com/USER/REPO.git
我该怎么办?这对我来说是一个严重的问题。
答案 0 :(得分:1)
Git将子模块视为推送到远程的单独存储库。这里正确的过程是推送每个子模块,然后推送包含子模块的子模块,最后推送你的根项目。所以你想要做这样的事情:
cd app/submodule1/submodule2/
git commit -m # commit files in submodule2
git push # push to repository
... # do the same for all other submodules in submodule1
cd app/submodule1/
git commit -m # commit files in submodule1
git push # push to repository
最后:
cd app/ # change to directory of main project
git commit -m # commit files in main project
git push # after this everything will be up to date