将远程heroku repo添加到我现有的本地仓库后,无法推送到heroku

Sed*_*ona 7 git ruby-on-rails github heroku git-remote

这是场景:

1)我的项目合作伙伴和我正在使用github作为我们的代码仓库一起开发Ruby on Rails应用程序.

2)该应用程序在她的github帐户下,她已将我添加为合作者

3)她部署到Heroku并在那里加入我作为合作者

4)我在现有的app目录中使用了以下命令,目的是将现有的Heroku远程应用程序添加为现有本地应用程序的远程应用程序.正如我之前提到的,我现有的本地应用程序已经有了一个远程github

git remote add heroku git@heroku.com:codefellow.git 
Run Code Online (Sandbox Code Playgroud)

5)我做了一些修改并将它们推送到github,所有这些都是最新的

6)然后我尝试使用以下命令推送到heroku

git push heroku master
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

那么有谁知道这里发生了什么?如果我和Github约会,我的本地分支如何与Heroku不同步?我的项目合作伙伴是否可以将更改推送到Heroku,而不是先将它们推送到Github?我查了一下,她没有应用程序的分支.我现在无法与她取得联系,以确定她可能做了什么 - 我甚至不确定如果他们还没有被推到Github那么它会让她更改为Heroku.任何见解都将非常感激.我不想从Heroku克隆应用程序,因为我已经在本地与Github同步了.我想使用Github作为代码库,我不愿意从Heroku的克隆开始.我已经看过关于这个的Heroku文档了:https://devcenter.heroku.com/articles/git.它只是说要做一个克隆但我不想因为上述原因这样做.我按照这个问题的答案中给出的指示(如何将文件夹与现有的Heroku应用程序链接)来实现这一目标,但似乎有一个缺失的部分或者我的项目合作伙伴做了一些不寻常的事情.提前感谢您提供的任何有用的想法.

Joh*_*non 29

您看到的消息表示已对您本地副本中没有的应用程序进行了更改.当你推送它被拒绝因为Heroku远程比你的更远,所以你认为你的伙伴已经推送到Heroku而没有推送到Github是正确的 - 这是一个常见的情况,因为你部署到Heroku时从本地存储库部署,与传统的Capistrano部署不同,后者通常会从Github部署代码.

这取决于你作为一个团队提出工作方法,以防止这种情况发生,但如果你现在需要工作,你可以

  • git push heroku master -f.这会强制您进行更改,并会使用您的代码覆盖当前的更改
  • git pull heroku master将Heroku的更改提取到您的本地仓库中,然后让您git push heroku master在进行更改时执行操作.

  • 非常感谢!!这是我从有关该主题的讨论中收集到的各种意见的一种非常简洁的概括,即清晰明确。我确实认为我只需要等到与我的伴侣取得联系就可以了,因为我宁愿将github用作源,而且我有等待的奢侈。但是,如果我迫不及待地想知道我的选择,那将是个好消息。确认这可能正在发生也很好。再次感谢。 (2认同)