如何重置Heroku应用程序并重新提交所有内容?

时间:2011-05-23 23:38:18

标签: ruby-on-rails-3 git heroku

我正在构建一个我也在Heroku中测试的应用程序。我今天遇到了一些问题并且不得不在我当地的git repo中回滚一个提交,但Heroku现在不会认识到我的更改说“一切都是最新的”。

所以,运行

git push heroku master

heroku回复

Everything up-to-date

这不是真的。

更新:我尝试过的事情

git push -f heroku master
git push --force heroku master
git push heroku +master
git push --force heroku +master

在源代码中进行了一些更改,然后

git add.
git commit -a -m "Message" #(Then this commit shows in my git explorer)
git push heroku master #Everything up-to-date

9 个答案:

答案 0 :(得分:50)

听起来很奇怪。也许尝试推动不同的分支会做什么?

git branch production
git checkout production
#do some code changes
git commit -am "some desperate code changes to try fix heroku"
git push heroku production:master

我希望您测试创建新的生产分支。此外,拥有一个可用于部署的生产分支是件好事。

如果它不起作用,那么我认为问题会更深入,你需要来自heroku的帮助。

编辑: 添加 heroku版本插件。回滚就像heroku rollback

一样简单

答案 1 :(得分:44)

这并不适用于所有情况,但如果您的本地仓库与Heroku仓库不同,那么git无法弄清楚如何协调两者 - 就像您在推送到本地分支后重新定位本地分支一样Heroku - 您可以通过在ref之前加一个加号+来强制推送,如下所示:

git push heroku +master

它可能不适用于您的情况,但值得一试。

答案 2 :(得分:19)

这对我有用(来自https://coderwall.com/p/okrlzg):

  1. 运行heroku plugins:install https://github.com/lstoll/heroku-repo.git
  2. heroku repo:reset -a APPNAME
  3. 从那里,git存储库已经“重置”。接下来,运行:

    1. git push heroku master -a APPNAME
    2. 为git存储库提供种子并重新部署您的应用程序。

答案 3 :(得分:8)

假设您回滚了一个远程执行的提交,以前存在。我想你应该做:

git merge heroku/master

如果你只是想继续前进

或:

git push --force heroku master

如果你想推动这一改变

答案 4 :(得分:4)

我曾遇到类似的问题并通过更改代码中的一个字符并再次运行git add / commit / push来解决它。我想你已经尝试过了。

不要破坏应用程序,只需在CSS文件或其他内容中添加注释,看看是否可以解决这个问题

祝你好运

答案 5 :(得分:3)

我有同样的问题并通过

解决了

Git push origin HEAD:master

为你

Git push heroku HEAD:master

答案 6 :(得分:0)

过了一会儿,我开始使用像这样的deploy.rake

这样的rake任务

它将标准化并加速部署,尤其是在实施迁移时

puts `git push -f git@heroku.com:#{APP}.git #{current_branch}`

如您所见,选项 - 强制(或 -f )用于任何推送,以便忽略与heroku的git repo的任何冲突

但我不建议新人使用:)

答案 7 :(得分:0)

我有同样的问题,我尝试了所有的建议并没有帮助。我必须在本地运行资源预编译并推送,即使我做了heroku run rake assets:precompile

rake assets:precompile
git add .
git commit -am "local assets precompile"
git push heroku master

答案 8 :(得分:-1)

当您上传引导的新版本(slug)时,您的heroku应用程序将自动重置。如果以某种方式更改您的app,使其无法启动,您的应用dynos将继续运行旧版本。

换句话说,当您部署应用程序时,它会将slug(新源代码)加载到新的dyno中,如果dyno正确加载应用程序,它将使该dyno替换运行应用程序的当前dynos。 / p>

这可能是你没有看到任何变化的问题......

如果您有git push heroku的日志,请发布。

编辑: git reset处理git索引,而不是工作树或当前分支。

你必须检查你重置的提交以实际更改文件 - 这与heroku如何交互,我不太确定(从未将部署回到heroku,手指交叉),但希望它有所帮助。也许在结帐后尝试git push heroku