Heroku:如何在“git push -f”后执行“git pull”

7
我在尝试推送到Heroku后,收到了以下错误消息(复制如下)。我最初设置了一个Facebook Canvas应用程序,并选择了Heroku选项进行托管。它给了我一个Heroku网址,我将其添加为我的机器上正在开发的应用程序的远程地址。
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 的名称?还是其他什么?

2个回答

23

强制执行你的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

这个错误基本上意味着仓库中有比你试图推送的代码更新的代码。

你需要执行拉取操作并更新自己的工作仓库,然后再次推送,或者强制推送。

git pull heroku master

顺便提一下,如果您不熟悉所有的git命令,我建议您使用GUI界面,因为这可能会使整个过程变得更加轻松。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接