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?
git subtree push
does not have a --force
option (or anything similar).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?
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With