gitリポジトリ内にWebアプリケーションがあります。歴史的な理由により、Webアプリケーションはリポジトリのルートになく、。というフォルダ内にありますwebsite。他にもいくつかのフォルダがあるので、次の構造になっています。
myApp
+- .git
+- otherFolder1
+- otherFolder2
+- otherFolder...
+- otherFolderN
+- website
WebサイトはHerokuで運営されています。Herokuは、Webアプリケーションがgitリポジトリのルートにあることを要求するため、これまでwebsite、独自のgitリポジトリを持つ完全に異なる(外部)フォルダーにフォルダーをコピーするビルドプロセスを使用していました。その後、そこからHerokuにプッシュすることができ、すべてが順調でした。
gitにsubtreeコマンドが含まれているので、最初のフォルダーから直接プッシュできるので、これはもう必要ありませんがwebsite、次を使用してサブフォルダーだけをプッシュできます。
git subtree push --prefix=website heroku master
基本的に、これは完全に機能します。問題は1つだけです。Herokuへの以前のコミットは完全に異なるgitリポジトリからのものであるため、両方の履歴が互いに一致しません。したがって、Herokuは非早送りプッシュを検出し、subtreeプッシュを拒否します。
では、どうすればこれに対処できますか?
- アイデア1:強制プッシュ。それを試しましたが、オプション(または同様のもの)がないため機能し
git subtree pushません。--force - アイデア2:Herokuのリポジトリをクリアして、最初からやり直します。
アイデア2を採用したいのですが、これを実現する方法がわかりません。
私の最初のアプローチはを実行することでしたgit push heroku :masterが、Herokuはこれを検出して拒否します。
もちろん、アプリを破棄して再作成することもできますが、そうすると、すべてのドメイン割り当てとアドオンも失われるので、それを避けたいと思います。
他のアイデアはありますか?