如何将我的git repo的一部分推送到Heroku?

时间:2011-05-12 11:27:01

标签: git heroku

我有一个已经在Github上的多模块应用程序。它由两个模块组成,其中一个是Android应用程序,另一个是基于Rails的Web应用程序。所以我的项目的目录结构是以下形式:

ProjectRoot
|
+-- web
|
+-- android
|
+-- .git

因此我不能简单地cd进入ProjectRoot并将我的应用推送到Heroku,因为Rails应用的根文件夹是ProjectRoot/web。有没有办法将web文件夹推送到Heroku?如果我将web转换为git子模块,那么应该很容易实现这一点,但是我在Git上只有5个私有回购,而我更喜欢只为我的整个应用程序使用1个回购。

3 个答案:

答案 0 :(得分:58)

您可以使用git subtree push。它将以root身份生成一个新的提交树,并将其推送。

git subtree push --prefix web heroku master

完整文档为here

答案 1 :(得分:11)

git subtree命令(内置,现在)是一种很好的方法。如果你想推动一个分支的子树成为你的主人,你可以使用类似的东西:

git push --force heroku `git subtree split --prefix web HEAD`:master

答案 2 :(得分:4)

您也可以使用git branches而不是子文件夹。如果你有git 1.7.2或更新版本,你可以简单地git checkout --orphan android创建一个与主分支断开的分支(假设这里是web文件夹)。签出孤立分支后,运行git rm -rf .删除现有文件,然后再将特定于android的文件复制到现在空的根目录。

如果要为每个模块使用单独的文件夹,可以将存储库克隆两次并使用此结构:

ProjectRoot
├── android
│   └── .git
└── web
    └── .git