代码推送到heroku不工作

时间:2013-10-08 12:33:33

标签: ruby-on-rails ruby-on-rails-3 git heroku deployment

我想在gihub上的heroku上推送代码

我使用了以下命令

git push heroku mybranch:master

错误是

To https://github.com/user/lyricle-new.git
 ! [rejected]        lyricle-frt-backend -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/user/app.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and merge the remote changes
hint: (e.g. 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

使用命令git pull,如提示响应为Already up-to-date.

这个错误背后的原因是什么?这是推进heroku的正确方法

2 个答案:

答案 0 :(得分:3)

通过执行git push heroku mybranch:master,您告诉git带您的本地 mybranch分支并将其与远程 master合并分支(远程存储在你的heroku repo上) 您收到错误是因为master在提交方面超过了mybranch

考虑这个例子:
master: --------b---------m---------
mybranch:........\-c--c--/...........

在某些时候,你将( b )master分支到mybranch,将一些代码提交( c )到分支,然后合并( m )它回到主人。

现在考虑这个例子:
master: --c-----b---c-----m---c--
mybranch:........\-c--c---/.......

这几乎是相同的情况,但是当您将代码提交到mybranch时,有人通过提交其他代码来更新master。如果您要将mybranch合并回master,则可能会导致代码与master中包含的新代码之间发生冲突,因此Git拒绝执行合并。首先,您必须使用新版本的master更新本地分支,然后只有Git才允许您推送。

简而言之:
- git pull heroku master:mybranch
- 解决潜在冲突
- 提交修改后的文件
- git push heroku mybranch:master


现在关于Heroku,你应该总是推送这样的代码:git push heroku master(考虑到你在本地的master分支上)。你应该做些什么来避免像git push heroku mybranch:master这样的事情,当你完成一个分支时,总是将你的更改合并到master,然后(在验证一切正常后)将master推送到heroku。

请参阅此资源,了解您正在寻找的简单git工作流:https://www.atlassian.com/git/workflows#!workflow-feature-branch

最终所有东西都集中在master中,然后你可以定期将master推送到heroku(理想情况下你会为你的app的每个版本推送一次)

答案 1 :(得分:0)

从提示中,您似乎没有将最新更改推送到远程存储库。如果您已完成拉动并再次推送,则可能已删除了本地存储库中未在远程存储库中删除的文件。做一个git add --all然后提交并推送更改。