在'git filter-branch`之后无法推送到Heroku:更新被拒绝,因为当前分支的提示落后了

Hol*_*oly 2 git github heroku

我昨天清理了我的提交历史,因为有一些私人信息被意外推送.清理完提交后,我强行推送到我的主分支.在我的电脑和我的回购中,一切都是一样的.但是,当我尝试推送到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.
Run Code Online (Sandbox Code Playgroud)

所以我一直在寻找类似的线程,并尝试过:

$ git pull origin mastergit pull --rebase origin master

返回:

 * branch            master     -> FETCH_HEAD
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)

我也尝试过git fetch返回相同的响应.它说一切都是最新的,为什么我不能推送到heroku?这与git filter-branch我昨天跑的有什么关系,我该如何解决?

Séb*_*ans 6

Git的设计方式可以防止你覆盖任何已被推送到遥控器的分支.你git filter-branch是重写分支历史的众多方法之一(你在问题中直接得到了这一部分).

--force期权git push可以让你无论在更新历史上的任何分歧的远程分支.

请注意,从技术上讲,您的私人信息不能保证完全删除.

  1. 在我们所说的内容中,它仍然在您的本地存储库中 dangling commits
  2. 它仍然在遥控器上的对象上,但不一定由任何分支引用.如果是这种情况,可以安全地假设将来没有克隆或提取将检索这些对象.如果您对git服务器有命令行访问权限,那么您可能仍希望git gc在那里运行.
  3. 如果他们已经拉你的分支,它就在其他人的存储库中.关于此,您无能为力,因此默认情况下您应该考虑将数据泄露.