How can I push a part of my git repo to Heroku?
GitHerokuGit Problem Overview
I have a multi-module app that is already on Github. It is comprised of two modules, one of them an Android app and the other a Rails based Web app. So my project's directory structure is in the form of:
ProjectRoot
|
+-- web
|
+-- android
|
+-- .git
As such I cannot simply cd
into ProjectRoot and push my app to Heroku as the root folder of the Rails app is ProjectRoot/web
. Is there a way to push the web
folder to Heroku? If I turn web into a git sub module, it should be easy to accomplish this, but then I only have 5 private repos on Git and I prefer to consume only 1 repo for my whole app.
Git Solutions
Solution 1 - Git
You can use git subtree push
. It will generate a new commit tree with your directory as root, and push it.
git subtree push --prefix web heroku master
Full documentation is here.
Solution 2 - Git
The git subtree
command (built in, now) is a good way to do this. If you want to push a subtree of a branch to become your master, you can use something like:
```git push --force heroku git subtree split --prefix web HEAD
:master
Solution 3 - Git
You could also use git branches instead of subfolders. If you have git 1.7.2 or newer, you can simply do git checkout --orphan android
to create a branch that is disconnected from your master branch (assumed here to be the web folder). Once you have checked out the orphan branch, run git rm -rf .
to remove existing files before copying in your android-specific files to the now empty root directory.
If you want to use separate folders for each module, you can clone the repository twice and use this structure:
ProjectRoot
├── android
│ └── .git
└── web
└── .git