16

我在推送到不同的 heroku 遥控器时遇到问题。

为了检查自己,我将整个项目目录重命名为 _backup,然后:

git clone account/repo_name

git remote add repo2 git@heroku.com:repo2.git

git push repo2 branch_abc:master

但我仍然得到

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.

我已经尝试了几个 SO 问题和答案,但对我没有用,无论如何仍然会收到错误。

4

3 回答 3

42

如果您不关心 repo2 中当前的内容并且确信完全覆盖它是可以的,那么您可以使用:

$ git push -f git@heroku.com:<heroku repo name>.git

请记住,如果其他开发人员更改自您上次从存储库中撤出后发布,这push -f 可能会抹杀其他开发人员的更改……所以在多开发人员团队中使用时要格外小心!
在这种情况下,heroku 总是在下游,而 github 是管理和维护代码的地方,因此这使得push -fheroku 成为一个比其他方式更安全的选择。

于 2013-01-30T16:53:59.933 回答
7

我一直是使用 git pull --rebase 然后 git push origin master 的忠实粉丝。我工作过的几个地方,因为很多地方都不允许 push -f(尤其是使用 bitbucket 的地方)。

git pull --rebase 
git push origin master

rebase 会将您的更改应用到远程(在线网站)之后。该视频从字面上介绍了您的确切问题并使用 git pull --rebase https://youtu.be/IhkvMPE9Jxs?t=10m36s解决了它

于 2017-04-17T18:58:31.583 回答
6

如果你先拉另一个 repo:

git拉回购2

这将合并到您可以添加和提交的其他存储库的更改中。

然后你可以将 repo 推回去。

于 2013-05-18T06:59:02.317 回答