以下是该方案:
1)我的项目合作伙伴和我正在使用github作为我们的代码仓库,共同开发Ruby on Rails应用程序。
2)该应用程序在她的github帐户下,她已将我添加为合作者
3)她部署到Heroku并在那里加入我作为合作者
4)我在现有的app目录中使用了以下命令,目的是将现有的Heroku远程应用程序添加为现有本地应用程序的远程应用程序。正如我之前提到的,我现有的本地应用程序已经有了一个远程github
git remote add heroku git@heroku.com:codefellow.git
5)我做了一些修改并将它们推送到github,所有这些都是最新的
6)然后我尝试使用以下命令推送到heroku
git push heroku master
7)这给了我一个错误,说我的分支的提示落后了,如下所示,但是当我试图从github拉出来时,它说我是最新的,如下所示
➜ code-fellows-alumni git:(master) git push heroku master
To git@heroku.com:codefellow.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@heroku.com:codefellow.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
➜ code-fellows-alumni git:(master) git pull
Already up-to-date.
所以有人都知道这里发生了什么吗?如果我和Github约会,我的本地分支如何与Heroku不同步?我的项目合作伙伴是否可以将更改推送到Heroku,而不是先将它们推送到Github?我查了一下,她没有应用程序的分支。我现在无法与她取得联系,以确定她可能做了什么 - 我甚至不确定如果他们还没有被推到Github那么它会让她更改为Heroku。任何见解都将非常感激。我不想从Heroku克隆应用程序,因为我已经在本地与Github同步了。我想使用Github作为代码库,我不愿意从Heroku的克隆开始。我已经查看了Heroku文档:https://devcenter.heroku.com/articles/git。它只是说要做一个克隆但我不想因为上述原因这样做。我按照这个问题(How to link a folder with an existing Heroku app)的回答中的指示来做到这一点,但似乎有一个缺失的部分或者我的项目合作伙伴做了一些不寻常的事情。提前感谢你提出的任何有用的想法。
答案 0 :(得分:29)
您看到的消息表示已对您本地副本中没有的应用程序进行了更改。当你推送它被拒绝因为Heroku远程比你的更远,所以你认为你的伙伴已经推送到Heroku而没有推送到Github是正确的 - 这是一个常见的情况,因为你部署到Heroku时从本地存储库部署,与传统的Capistrano部署不同,后者通常会从Github部署代码。
作为一个团队,你需要找到防止这种情况发生的工作方式,但是如果你现在需要工作,你可以
git push heroku master -f
。这会强制您进行更改并使用您的代码覆盖当前的更改git pull heroku master
将Heroku中的更改提取到您的本地仓库中,然后您可以在进行更改时执行git push heroku master
。