GitHub到Heroku提交错误

时间:2011-08-24 14:05:57

标签: git heroku

使用Aptana Studio 3和Heroku进行RoR网站项目。当我通过GitHub'提交'后将我的网站推送到Heroku时,我不断收到此错误。已到处搜索,但无法找到我可以遵循的简单解决方案。有什么建议发生了什么以及如何重新开始? THX。

User$ git push heroku master
To git@heroku.com:xxxxxx.git
! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@heroku.com:xxxxxx.git'
To prevent you from losing history, non-fast-forward updates were rejected.
Merge the remote changes before pushing again.
See 'non-fast forward' section of 'git push --help' for details.
User$ 

我在@SkillDrick中尝试了这个建议,并在最后得到了这个错误:

User$ git merge heroku/master master
usage: git merge [options] <remote>...
or: git merge [options] <msg> HEAD <remote>

-n                    do not show a diffstat at the end of the merge
--stat                show a diffstat at the end of the merge
--summary             (synonym to --stat)
--log                 add list of one-line log to merge commit message
--squash              create a single commit instead of doing a merge
--commit              perform a commit if the merge succeeds (default)
--ff                  allow fast forward (default)
-s, --strategy <strategy>
                      merge strategy to use
-m, --message <message>
                      message to be used for the merge commit (if any)
-v, --verbose         be more verbose
-q, --quiet           be more quiet



user$ git push heroku master
To git@heroku.com:worrybin.git
! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@heroku.com:worrybin.git'
To prevent you from losing history, non-fast-forward updates were rejected.
Merge the remote changes before pushing again.
See 'non-fast forward' section of 'git push --help' for details.

4 个答案:

答案 0 :(得分:6)

我有同样的问题。一个非常简单的解决方案是强制推动:

git push heroku master -f

由于heroku只是用于部署你的应用程序(而不是像源/主机这样的源代码控制),这应该没问题。

答案 1 :(得分:5)

出于某种原因,你的Heroku回购已经分道扬..你可以这样做:

git fetch heroku
git merge heroku/master
git push heroku master

将“在再次推送之前合并远程更改”。在合并之前,可以git diff heroku/master找出实际不同的内容。

答案 2 :(得分:0)

执行git pull,然后执行git push

答案 3 :(得分:0)

就像manojlds说的那样,先做一个git pull。

实际上,在做任何事情之前,请检查您的本地回购,如果您有任何更改。

git status

如果没有,请执行git pull heroku master。如果有变化,请提交或存储它们。(我想说现在就把它们藏起来)

你拉(希望没有任何冲突)后,做一个git push heroku master,你应该全部设置好。如果您有冲突,请先解决,然后提交,然后按。

基本上发生的事情是你的heroku repo与你当前的回购分歧。这主要发生在以下场景中:

  1. UserA进行更改,推送到heroku和你的github repo。
  2. UserB拉动,进行更改,推送到heroku repo并忘记推送到github。
  3. UserA从github拉出并尝试推送到heroku。
  4. 在这种情况下,你是userA,这意味着你拉了一些不在heroku中的东西。