我怎么能把我的git回购的一部分推到Heroku?

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

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

因此,我不能简单地cd到ProjectRoot中,并将我的应用程序推送到Heroku,因为Rails应用程序的根文件夹是ProjectRoot/web 。 有没有办法将web文件夹推送到Heroku? 如果我把网站变成一个git子模块,应该很容易做到这一点,但是我只有5个私人回购Git,我更喜欢只消耗1回购我的整个应用程序。

你可以使用git子树 。 它将以您的根目录为根目录生成一个新的提交树,并将其推送。

 git subtree push --prefix web heroku master 

完整的文档在这里 。

要安装它:

 git clone git://github.com/apenwarr/git-subtree.git cd git-subtree sudo sh install.sh 

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

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

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

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

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