我有一个在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
推送。
那么我该怎么办呢?
- 想法1:强制推送。试过了,但不起作用,因为
git subtree push
没有--force
选项(或类似的选项)。 - 想法2:清除Heroku的存储库,重新开始。
我很想尝试想法2,但我不知道如何实现。
我的第一步是运行git push heroku : master
,但Heroku检测到了这一点并拒绝了它。
当然,我可以摧毁应用程序并重新创建它,但所有域分配和add-ons也会消失,我希望避免这种情况。
还有其他想法吗?
git fetch heroku master
,然后再执行git merge -s ours heroku/master
,最后再尝试推送子树。 - kev