我尝试推送到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的名字?或者是其他东西?
答案 0 :(得分:18)
强制您的git push
不是一个好主意,因为您丢失了您或您在工作副本上缺少的其他协作者所做的任何提交。
在推送之前,您应该将上游更改合并或重新绑定到本地工作副本中。
在本地合并更改
$ 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以部署应用程序。
答案 1 :(得分:1)
该错误基本上意味着repo中的代码比您尝试推送的代码更新。
你必须做一个拉动并更新你自己的工作存储库然后再次推送,或者只是强制推送
git pull heroku master
作为旁注,如果您不熟悉所有git命令,我建议您使用GUI,因为它可能会使整个过程不那么压倒性。
这里有很多优秀的客户:http://git-scm.com/downloads/guis