将不属于git回购协议的资产推给heroku
我有一个网络应用程序。在public文件夹中应该有资产(buildjs/images/index.html) 我不想将这些资产存储在我的git回购中(因此,public被添加到regulqr.gitingore),所以我不想将其复制到那里然后部署 问题是如何正确实施此工作流 我想做的是(这将由一些自动脚本完成):将不属于git回购协议的资产推给heroku,git,heroku,github,Git,Heroku,Github,我有一个网络应用程序。在public文件夹中应该有资产(buildjs/images/index.html) 我不想将这些资产存储在我的git回购中(因此,public被添加到regulqr.gitingore),所以我不想将其复制到那里然后部署 问题是如何正确实施此工作流 我想做的是(这将由一些自动脚本完成): 从.gitingore中删除public文件夹(这样现在就可以删除资源了 添加到git) 提交此更改(新建.gitingore和资产) git-push-heroku-f git重置—
添加到git)
这种方法有什么问题?这种方法不是一个好主意。事实上,重置数据库将导致本地数据库历史记录与Heroku历史记录不同 在第一次部署之后,后续部署将失败,因为推送不是快进的。git将要求您从Heroku中提取更改(有效地将资产重新合并到回购中)。否则,您将需要强制每次推送,但这不是一个好方法,它将增加错误覆盖远程存储库的机会
我的建议是,如果您不想将资产放在存储库中,那么请将它们完全从Heroku移开。例如,您可以忽略该文件夹,并将资产部署到AmazonS3或CDN上。您可以利用Heroku应用程序之外的资源,并通过CDN为其提供服务。CND是其中一种方案,但无论如何,还有index.html,其中包含指向编译资源的链接(使用哈希名称),每次使用新资源时都会创建这些资源(将其存储在git中并不是什么大问题,但我想如何在git中只存储服务器代码)。对于所有这些问题,我还没有找到一个令人满意的答案。顺便说一句,这就是问题推——强制到heroku?我不需要此repo与我的开发状态完全一致(就所有提交而言)。我不会在任何时候退出。正如我所说,使用--force完全绕过git历史记录检查。
--force不应作为标准工作流的一部分使用,它很容易被错误地完全覆盖(因此部署错误的版本)。默认情况下,不应使用--force
,它的存在是有原因的。