git push heroku master 告诉你“Everything up-to-date”,但应用程序不是最新的。

86

我在Heroku上运行着一个应用程序,它正在运行旧的代码。我做了一个小改动并提交了更改。然后我运行了

git push heroku master

它将会说

Fetching repository, done.
Everything up-to-date

但是,如果我打开应用程序看一下,所有的代码都是旧版的。大约15天前,我将该网站还原到Heroku的另一个版本,但自那以后就一直在更新它,并且这些更新也起作用了。

为什么Heroku没有从我的GitHub存储库获取最新的文件呢?有没有一种方式可以重置应用并再次从GitHub中推送文件?我在数据库中有生产数据,所以我不想去碰它。


3
我也遇到了同样的问题。你最终解决了吗?这里提供的答案都是明显的,但我已经尝试过并且没有用。@Darkmatter5 - Ben
1
答案说我可能在另一个分支上,但我遇到了同样的问题,而我的分支是主分支。本地上我已经进行了更改,成功地部署到了Heroku,而Git表示本地和Heroku之间没有区别,但实际上更改并没有显示出来(浏览器仍然显示部署之前的旧版本)。我已经清除了客户端和服务器缓存,但问题仍然存在。 - Clarity
14个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
1
我知道,我知道,这很傻,但这确实发生在我身上,所以我要提醒其他人:确保您推送的应用程序与您检查更改的应用程序相同。 在我的情况下,我正在将应用程序推送到staging,然后在production上运行shell,不理解为什么静态文件没有更改。 (它始于一个真正的问题,当我推送新版本时,静态文件没有更改,但这可能是一个偶然事件,而且只让我花了另外一个小时在错误的应用程序上测试。)

这是我的问题。我执行了 git remote -v 命令来检查我的 "heroku"(生产环境)远程和 "staging" 远程的 URL,结果它们都是相同的 staging URL。所以我一直在向 staging 推送两次。我删除了生产环境的 URL,并从我的 heroku 控制面板上添加了正确的远程 URL 到本地应用程序中。谢谢! - DC1477

1
如果您正在向Heroku推送代码并收到“已经是最新的”消息,则意味着您在像开发分支这样的分支中,但是部署的是主分支。解决此问题的方法是使用git推送,例如“git push heroku main”将发布您的本地主分支而不是领先于提交的开发分支。因此,在推送到Heroku之前,只需将“开发”分支合并到“主”分支即可解决此问题。

另外补充一点 - 解决方案是切换到主分支并使用 "git checkout master" 命令,如果有必要则合并另一个分支以获取更新,然后执行 "git push"(将更改推送到Github仓库),最后执行 "git push heroku master"(将更改推送到Heroku)。 - Conor

1
我的可执行文件名已更改,但我忘记在我的Procfile中更改名称。因此,虽然所有文件在heroku上都正确更新,但仍在运行相同的旧可执行文件。 我使用命令行中的heroku local来帮助跟踪该问题。

0

我也遇到过同样的问题。对我有用的方法是清除浏览器历史记录或在隐身窗口中打开应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,