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个回答

102

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

 git branch 
如果指针没有指向主分支,则切换到主分支。
git checkout master

提交您的更改,尝试推送到Heroku

git commit -am "xxxyyzzz"    
git push heroku master

196
如果你想将本地非主分支推送到Heroku主分支,可以使用命令git push heroku yourlocalbranch:master - Danny
3
遇到和@danny一样的问题,来到这里寻求帮助,最终采用了Hudson提供的解决方案。 - Angel S. Moreno
如果当前分支是主分支,但我仍然遇到了上述问题,怎么办? - Clarity
我怎么会忘记这个呢? 谢谢你的回答。 - Ahmad Habib

74

当您运行git push heroku master时,git假设您正在从主分支推送,因此如果您所做的更改在其他分支中,则会尝试推送未更改的主分支。

您有两个选择:

1.将更改与主分支合并后再推送。

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

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

23

我曾经遇到过类似的问题,然而在heroku上并没有看到我的更改。为了再次确认,我甚至从heroku上克隆了一个副本,发现它显然是最新的。

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

第一步: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 命令有所帮助。 - Sunny
谢谢这个。非常顺利地完成了。我不知道可以将一个分支推到另一个分支。 - mithushancj
它显示“一切都是最新的”,但问题仍然存在。 - Clarity
你的解决方案真是太神奇了!!! - Djesu

13

我敢打赌你忘记运行git add .然后跟着运行git commit -m 'xyz'了吧?


呵呵,这让我笑了。在为修复细节问题而连续编写三天三夜后,我竟然忘记添加并提交了我的代码。 - RegarBoy

6
当发生这种情况时,我会像这样将先前的提交哈希推送到主分支:
git push some-heroku-app-name SOME-COMMIT-HASH:master --force

然后我像这样重新推送主分支:

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

1
我在更改Heroku的构建包后需要重新构建时使用了这个。你可能需要在第一个命令中添加--force - Markus
@Markus 实际上,我从来没有需要使用“--force”。虽然这样做不会有什么影响,但我已经更新了我的答案。谢谢! - Vladimir Djuricic

5
尽管这是一个旧问题,但我想更新一下我的解决方法(作为新手),以防其他人遇到同样的问题:
在按照Hudson的指示操作后,最终对我有用的是在检出“master”分支后执行“git pull”。也许“git push heroku master”只会推送本地主分支?
当然,这假设所有所需的更改都已正确合并到您的主分支中。自项目设置以来,我从未从本地拉取过主分支,因为所有合并(从开发到主分支)都是在GitHub上处理的,并且我一直在新的分支上工作,后来与开发分支合并。
因此,重新阐述一下Hudson上面的步骤: git checkout master git pull (这里,我更新了README文件,进行了更改,例如“Heroku deploy [日期,时间]”) git add . git commit -am“xxxyyzzz” git push heroku master heroku run rake db:migrate heroku restart 祝你好运!

我也遇到了同样的问题,我在推送另一个分支并合并后没有拉取主分支。 - dennispreston

4

我注意到只有当您指定本地分支时,它才起作用:

git push heroku <local_branch_name>:master

3
尝试执行以下命令:

heroku status

该命令返回如下信息,证实问题是由于Heroku API引起的(而不是我的应用程序!):

"API出现延迟。这可能会导致添加新域、新发布和其他类似操作出现延迟。目前,工程师正在调查该问题。"


2

我遇到了同样的问题,我使用heroku git:remote命令将远程库添加到我的本地库中,然后进行了推送。

heroku git:remote -a your-heroku-app

git push heroku master

1
如果您正在使用Java,请不要忘记在推送之前重新构建项目。
Gradle的情况:
gradlew clean install

1
不知道为什么你会被踩... 我之前在一个React项目中也有同样的问题。运行 webpack -p --progress --config webpack.config.prod.js (其中最后一个参数是你的webpack配置文件名),然后提交并推送解决了我的问题。 - abagh0703

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