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はこれを検出して拒否します。
もちろん、アプリを破棄して再作成することもできますが、そうすると、すべてのドメイン割り当てとアドオンも失われるので、それを避けたいと思います。
他のアイデアはありますか?