重置Heroku上的意外更改

时间:2015-07-22 22:20:44

标签: ruby-on-rails ruby git heroku

我遇到了一个非常烦人的问题。我正在研究一个托管在Heroku上的Rails项目,中心仓库托管在Bitbucket上。不幸的是,我无法访问linux盒子,因此我一直在Windows中工作,这迫使我对项目(gem版本等)进行各种更改以使其在我的功能中运行当地环境。通常这不是什么大问题,只要我不将任何这些更改推送到Heroku或Bitbucket。然而,今天,我对一个视图进行了一些非常小的修改,以便修复一个bug(总共3行),将那些小改动推到了Bitbucket,然后犯了一个错误,意外地将我的所有更改推送到Heroku(以及一堆Aptana配置文件)。

所以我有一种情况,我在Bitbucket上有一个正确的代码库,一个(n故意)搞砸了本地回购,以及一个意外搞砸了Heroku服务器。为了尝试纠正这种情况,我将Bitbucket repo克隆成了一个全新的本地仓库,然后尝试将其推送到Heroku。当我这样做时,我收到一个错误,表明我的本地回购已经落后了,所以我试图解决这个问题:

git pull heroku master
git reset master XXXthe_commit_I_want_reflected_on_herokuXXX --hard
git push heroku master -f

不幸的是,当我这样做时,Heroku现在无法构建。我的网站今天早上启动并运行,所以我知道旧的代码库功能齐全。我知道,在一个视图中,完全功能提交和我想要推送的提交之间的唯一变化是3行,所以即使它们不是很好的更改,它们也不应该破坏构建。我现在不知道是什么打破了构建。

与此同时,我已经使用Heroku的web gui回滚到最后一个工作版本(我推动Windows hacks之前的版本),但我真的需要让它工作。有人可以帮忙吗?

这是我的Heroku构建日志

-----> Ruby app detected
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.2.0
-----> Installing dependencies using 1.9.7
   Ruby version change detected. Clearing bundler cache.
   Old: ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
   New: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
   Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
   Fetching gem metadata from https://rubygems.org/.............
   Fetching version metadata from https://rubygems.org/...
   Fetching dependency metadata from https://rubygems.org/..
   Fetching git://github.com/Armor-Payments/armor_payments_ruby.git
   Fetching git://github.com/lacco/mailboxer.git
   fatal: Could not parse object 'd436329f771d1607a6835f0aeb8b1120a3562a47'.
   Git error: command `git reset --hard d436329f771d1607a6835f0aeb8b1120a3562a47`
   in directory
   /tmp/build_a5ee9a745f4daf14f284ecb5241f4bd2/vendor/bundle/ruby/2.2.0/bundler/gems/mailboxer-d436329f771d
   has failed.
   If this error persists you could try removing the cache directory
   '/tmp/build_a5ee9a745f4daf14f284ecb5241f4bd2/vendor/bundle/ruby/2.2.0/cache/bundler/git/mailboxer-2227b0f1f9bdf29f4822c250264b96e64ed63013'
   Bundler Output: Fetching gem metadata from https://rubygems.org/.............
   Fetching version metadata from https://rubygems.org/...
   Fetching dependency metadata from https://rubygems.org/..
   Fetching git://github.com/Armor-Payments/armor_payments_ruby.git
   Fetching git://github.com/lacco/mailboxer.git
   fatal: Could not parse object 'd436329f771d1607a6835f0aeb8b1120a3562a47'.
   Git error: command `git reset --hard d436329f771d1607a6835f0aeb8b1120a3562a47`
   in directory
   /tmp/build_a5ee9a745f4daf14f284ecb5241f4bd2/vendor/bundle/ruby/2.2.0/bundler/gems/mailboxer-d436329f771d
   has failed.
   If this error persists you could try removing the cache directory
   '/tmp/build_a5ee9a745f4daf14f284ecb5241f4bd2/vendor/bundle/ruby/2.2.0/cache/bundler/git/mailboxer-2227b0f1f9bdf29f4822c250264b96e64ed63013'
!
!     Failed to install gems via Bundler.
!
!     Push rejected, failed to compile Ruby app

1 个答案:

答案 0 :(得分:2)

为了将来参考,返回上次部署的最快方法是:

$ heroku rollback 

文档:https://devcenter.heroku.com/articles/releases#rollback