我昨天清理了我的提交历史,因为有一些私人信息被意外推送。清理完提交后,我强行推送到我的主分支。在我的电脑和我的回购中,一切都是一样的。但是,当我尝试推送到Heroku时,我收到了这个错误:
Updates were rejected because the tip of your current branch is behind its remote counterpart. Integrate the remote changes (e.g.'git pull ...') before pushing again.
所以我一直在寻找类似的线程,并尝试过:
$ git pull origin master
和git pull --rebase origin master
返回:
* branch master -> FETCH_HEAD
Already up-to-date.
我也尝试了git fetch
,它返回相同的响应。它说一切都是最新的,为什么我不能推送到heroku?这与我昨天跑的git filter-branch
有什么关系,我该如何解决?
答案 0 :(得分:5)
Git的设计方式可以防止您覆盖已经推送到遥控器的任何分支。你的git filter-branch
是重写分支历史的众多方法之一(你在问题中直接得到了这一部分)。
--force
上的git push
选项可让您更新远程分支,无论历史记录是否存在任何差异。
请注意,从技术上讲,您的私人信息不能保证完全删除。
dangling commits
git gc
。答案 1 :(得分:1)
我之前没见过这个,但我想我会试一试:
git push --force heroku master
你知道什么?它起作用了:))
答案 2 :(得分:0)
为此有效。
heroku plugins:install heroku-repo
heroku repo:reset -a <yourappname>
git push heroku master