git push heroku master说“一切都是最新的”,但该应用程序不是最新的


72

我在Heroku上有一个运行旧代码的应用程序。我做了一个小小的更改并提交了更改。然后我跑了

git push heroku master

会说

Fetching repository, done.
Everything up-to-date

但是,如果我去看看应用程序,那都是旧代码。大约15天前,我确实将网站恢复为Heroku的另一个版本,但从那时起便将更新推送到该网站,并且他们成功了。

为什么heroku无法从github存储库中获取最新文件?有没有一种方法可以重置应用程序并再次从github推送文件?我的数据库中有生产数据,所以我不想碰它。

提前致谢!!


3
这里同样的问题。你有没有解决?这里提供的答案是显而易见的事情,我已经试过了。@ Darkmatter5

回答说我可能在另一个分支上,但是我遇到了同样的问题,并且我的分支是master。我在本地进行了更改,并成功地将它们部署在heroku上,并且git表示本地和heroku之间没有区别,而更改实际上并未显示出来(浏览器在部署之前仍显示旧版本)。我已经清除了客户端和服务器缓存,问题仍然存在。
清晰度

Answers:


85

请确认您当前的分支是master。

 git branch 

如果指针未指向母版,则签出到母版分支

git checkout master

提交更改并尝试推送到heroku

git commit -am "xxxyyzzz"    
git push heroku master

169
git push heroku yourlocalbranch:master如果您想将本地非主分支推送至heroku主分支
Danny

1
@danny来到这里时遇到了同样的问题,清理了哈德森的解决方案。
Angel S. Moreno

如果当前分支是主分支,但我仍然遇到上述问题怎么办?
清晰度

64

当您运行时git push heroku master,git假设您是从master推送的,因此,如果您在其他分支中进行更改,则将尝试不更改就推送您的master分支。

你有两个选择

1.将更改与主控合并并推送。

在您的实际分支中提交您的更改,然后将其与master合并

git commit -a - m "your messages"
git checkout master
git merge your_feature_branch
git push heroku master

2从您的实际分支推送更改

git push heroku your_feature_branch:master

15

我有一个类似的问题,我的更改绝不会在heroku上可见。为了确认自己,我什至从heroku那里克隆了一个克隆,显然它是最新的。

我只能通过以下方法解决我的问题:

步骤1:从中建立新分支master

git checkout -b new_branch

第2步:只需在任何文件中添加注释即可进行新提交,然后:

git add .
git commit -m "Just a test commit to push new branch to heroku"

步骤3:将新分支推送到heroku。

git push heroku new_branch:master
heroku restart

现在,您可以在heroku上成功看到所做的更改。


3
这有git push heroku new_branch:master帮助
阳光明媚

谢谢你 像魅力一样工作。不知道这有可能将一个分支推到另一个分支。
mithushancj

它说“一切都是最新的”,但问题仍然存在。
清晰度

13

我敢打赌,你忘了git add .跟着跑git commit -m 'xyz'


嘿嘿,这让我发笑。经过三天三夜的编码以解决小问题,我忘了添加并提交我的代码
RegarBoy

4

尽管这是一个老问题,但如果有人遇到此问题,我想更新对我(新手)有用的内容:

在遵循了这里的说明(来自Hudson)之后,对我来说,最后的窍门是在签出“ master”分支之后执行“ git pull”。也许“ git push heroku master”仅推出master的本地分支?

当然,这假定所有必需的更改已正确合并到您的主数据库中。自从项目设立以来,我就没有从本地的管理员那里撤出,因为所有合并(从开发到管理员)都在GitHub上处理,而我一直在研究新的分支,这些分支后来与开发合并。

因此,请重述哈德逊的上述步骤:

git checkout master

git pull

(在这里,我更新了自述文件以进行更改,例如“ Heroku部署[日期,时间]”

git add .

git commit -am "xxxyyzzz"

git push heroku master

heroku run rake db:migrate

heroku restart

祝好运!


对我来说同样的问题,在推送另一个分支并合并之后,我没有拉动master分支。
dennispreston

3

尝试:

heroku status

这返回了以下内容,这确认问题出在heroku API上(而不是我的应用程序!):

“ API遇到了延迟。这可能会导致添加新域,新发行版和其他此类操作的延迟。目前,工程师正在研究此问题。”


3

发生这种情况时,我将先前的提交哈希推送到master像这样:

git push some-heroku-app-name SOME-COMMIT-HASH:master --force

然后我像这样重新推高手:

git push some-heroku-app-name master:master

1
在更改heroku上的构建包后,在需要重建时使用了此工具。您可能需要添加--force到第一个命令。
马库斯'18

@Markus实际上,我从来不需要“ --force”。拥有它并没有什么坏处,所以我更新了答案。谢谢!
弗拉基米尔·德朱里奇(Fladimir Djuricic)'18年

1

同样的问题,我使用heroku git:remote命令向我的本地存储库添加了一个远程服务器,然后将其推送。

heroku git:remote -a your-heroku-app

git push heroku master

0

我知道,我知道,这很愚蠢,但是这件事发生在我身上,所以我要向其他人发出警告:请确保您要推送的应用程序与您要检查更改的应用程序相同。

在我的情况下,我一直在尝试暂存,然后在生产环境中运行Shell,但不了解为什么静态文件没有更改。

(首先要解决一个实际问题,当我推送一个新版本时,静态文件不会更改,但这可能是一键式的,幸,由于我测试的是错误的应用程序,它只让我绕了一个小时。 )


0

如果您使用的是Java,请不要忘记在推入之前重建项目。

如果是Gradle:

gradlew clean install

不知道你为什么要反对...我遇到了同样的问题,但是有一个React项目。运行webpack -p --progress --config webpack.config.prod.js(最后一个arg是您的webpack配置文件的名称),然后提交并推送为我解决了这个问题。
abagh0703

0

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


0

多次发生同一问题。如果清除浏览器历史记录或在隐身窗口中打开应用程序,对我有用。


-1

遇到相同的问题,对我有用的是:使用随机消息进行提交,然后按入

git commit -m"random message"

git push heroku master
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.