7

尝试推送到 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 网址的名称?或者是其他东西?

4

2 回答 2

22

强制你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 托管。这意味着git pull从 Heroku 执行 a 是非常罕见的。相反,您应该使用 git 托管(例如 GitHub 或 BitBucket)来存储您的存储库,并且只执行推送到 Heroku 来部署应用程序。

于 2012-09-13T22:56:39.607 回答
1

该错误基本上意味着存储库中的代码比您尝试推送的代码更新。

您必须进行拉取并更新您自己的工作存储库,然后再次推送,或者只是强制推送

git pull heroku master

附带说明一下,如果您不熟悉所有 git 命令,我建议您使用 GUI,因为它可能会使整个过程不那么不堪重负。

这里有很多很棒的客户:http: //git-scm.com/downloads/guis

于 2012-09-13T23:03:50.253 回答