我在 git 存储库中有一个 Web 应用程序。由于历史原因,Web 应用程序不在存储库的根目录中,它位于名为website
. 除此之外还有一些其他文件夹,所以我得到了以下结构:
myApp
+- .git
+- otherFolder1
+- otherFolder2
+- otherFolder...
+- otherFolderN
+- website
该网站在 Heroku 上运行。由于 Heroku 要求您的 Web 应用程序位于 git 存储库的根目录中,因此到目前为止,我使用了一个构建过程,该过程将website
文件夹复制到具有自己的 git 存储库的完全不同的(外部)文件夹中。然后我能够从那里推到 Heroku,一切都很好。
现在,由于 git 包含该subtree
命令,因此不再需要该命令,因为我可以直接从我的初始文件夹推送,而只是从website
子文件夹推送,使用:
git subtree push --prefix=website heroku master
基本上,这非常有效。我只有一个问题:由于之前对 Heroku 的提交来自一个完全不同的 git 存储库,因此两者的历史不匹配 - 所以 Heroku 检测到非快进推送,并拒绝subtree
推送。
那么我该如何处理呢?
- 思路一:强制推送。试过了,但因为
git subtree push
没有--force
选项(或类似的东西)而不起作用。 - 想法 2:清除 Heroku 的存储库并重新从头开始。
我很想采用想法 2,但我不知道如何实现这一目标。
我的第一种方法是运行 a git push heroku :master
,但 Heroku 检测到这一点并拒绝它。
当然,我可以销毁应用程序并重新创建它,但是所有域分配和附加组件也都消失了,我想避免这种情况。
还有其他想法吗?