Short version

> heroku fork -a appname myapp-staging
> heroku info -a myapp-staging
Git URL: git@heroku.com:myapp-staging.git
> git remote add staging git@heroku.com:myapp-staging.git
> git push staging

Long version

Sometimes it’s nice to have a staging environment for your heroku app (i.e. staging, prod etc).

To create a fresh staging environment for your app we first need to fork it, and then create a git remote name like ‘staging’ and point it to your newly forked app.

1. Fork app

> heroku fork -a appname myapp-staging

Fork complete, view it at http://myapp-staging.herokuapp.com (i.e. http://nutshell-staging.herokuapp.com)

– appname is the name of the heroku app you want to fork. If your’ve already created a heroku app, it will have a name like ‘warm-wave-1832’.
– to see a list of your heroku apps type:

> heroku apps

– yourapp-staging is the name of the staging app you want to create (must be unique to heroku, so something like myapp-staging)

2. Create git repos name and point it to your newly created staging environment.

Before you can add a remote to your staging repos, you need the git url.
You can get that by going:

> heroku info -a myapp-staging
Git URL: git@heroku.com:myapp-staging.git

Now simple create a new git remote and point it to your newly created staging URL above:

> git remote add staging git@heroku.com:myapp-staging.git

3. Test.

> git remote -v

heroku git@heroku.com:myapp.git
origin https://github.com/xxx/pss.git
staging git@heroku.com:myapp-staging.git (fetch)

You should now see x3 git remotes.
One for your original ‘heroku’ app.
One for your github repos ‘origin’.
And your new one – ‘staging’

If you want to get rid of the ‘heroku’ git remote and replace it with ‘prod’ do this:

> git remote rm heroku
> git remote add prod git@heroku.com:myapp.git

Now the fun starts! You should now be able to do stuff like this:

> git push prod
> git push staging

http://nutshell-staging.herokuapp.com/

And each will go to their own respective heroku instances.