ruby-on-rails – Heroku:如何在’git push -f’之后“git pull”

尝试推送到Heroku后,我收到此错误消息(复制如下).我最初设置了一个Facebook画布应用程序,并选择了heroku选项托管.它给了我一个heroku url,我在我的机器上开发的应用程序中添加了一个遥控器
heroku git:remote -a desolate-springs-1684

但是当我推动时,我得到了这个错误

error: Failed to push some refs to 'git@heroku.com:desolate-springs-1684.git'
To prevent you from losing history,non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.
localhost:nhl michaelmitchell$

所以我做了

git push -f heroku master

但现在我显然必须做一个’git pull’.但是,在’git pull’之后我会放什么? heroku url的名字?或者是其他东西?

解决方法

强制你的git推送并不是一个好主意,因为你丢失了你或你工作副本中缺少的其他合作者所做的任何提交.

在推送之前,您应该将上游更改合并或重新绑定到本地工作副本中.

在本地合并更改

$git pull heroku master
$git push heroku master

在本地重新定义更改

$git pull --rebase heroku master
$git push heroku master

顺便说一句,既然你已经推动了你的改变,你实际上不需要做任何其他事情.远程存储库已包含所有更改.

如果无论出于何种原因,$git status命令返回过时的引用,只需运行即可

$git pull heroku

获取所有远程更改.请注意,除非您指定目标分支(或者您启用了跟踪分支),否则git pull将简单地下载(而不是合并)上游更改.

另请注意,Heroku不应被视为git托管.这意味着从Heroku执行git pull非常罕见.相反,您应该使用git托管(例如GitHub或BitBucket)来存储您的存储库,并仅执行推送到Heroku以部署应用程序.

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...