Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I reset a Heroku git repository to its initial state?

Tags:

I have got a web application within a git repository. Due to historic reasons the web application is not at the root of the repository, it is within a folder called website. Beside that there are some other folders, so that I have got the following structure:

myApp
+- .git
+- otherFolder1
+- otherFolder2
+- otherFolder...
+- otherFolderN
+- website

The website is run on Heroku. As Heroku demands that your web application is at the root of a git repository, until now I used a build process which copied the website folder to a completely different (external) folder with its own git repository. Then I was able to push from there to Heroku and everything was fine.

Now, since git includes the subtree command this is not necessary any longer, as I could directly push from my initial folder, but just the website sub-folder, using:

git subtree push --prefix=website heroku master

Basically, this works perfectly. I only have one problem: As the previous commits to Heroku came from a completely different git repository, the history of both doesn't match each other - so Heroku detects a non-fast-forward push, and rejects the subtree push.

So how do I deal with this?

  • Idea 1: Force push. Tried that, but doesn't work as git subtree push does not have a --force option (or anything similar).
  • Idea 2: Clear Heroku's repository and start from scratch again.

I'd love to go with idea 2, but I have no idea of how to achieve this.

My first approach was to run a git push heroku :master, but Heroku detects this and denies it.

Of course, I could destroy the app and recreate it, but then all domain assignments and add-ons are gone as well, and I'd like to avoid that.

Any other ideas?

like image 922
Golo Roden Avatar asked Sep 28 '12 17:09

Golo Roden


1 Answers

You can nest git commands to execute force push.

For your case the command will be:

git push heroku `git subtree split --prefix website master`:master --force
like image 80
Ivan Saskor Avatar answered Sep 27 '22 20:09

Ivan Saskor