heroku在推送后不更新子模块

时间:2015-05-12 06:38:42

标签: git heroku git-submodules

我在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

我该怎么办?这对我来说是一个严重的问题。

1 个答案:

答案 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