使用 BFG 清理 git 历史记录

cleaning git history with BFG

当我最近尝试将我的提交推送到 github 时,我收到了与此 . I removed the files from my repository but now have to clean up the history. As advised in the answers I looked into BFG, which seems to be the solution. While reading through the instructions 中相同的错误消息,它以使用 git --mirror link-to-remote-repo.

开头

现在我想知道,因为我还不能推送最新的提交,而且我的本地提交历史可能比 github 上的要长。此外,我不确定我所做的所有工作都是在一个分支上而不是在 master 上以及它如何影响我的存储库。

手动解决方案(基于cheery pick

编辑:开始之前请提交或存储您的本地更改。

假设我们有两个分支 masterdev,它们与 SHA1 = X 有共同的提交。分支 dev 包含提交 A1、A2、...、A16

  • git checkout dev
  • git checkout -b new-dev
  • git reset --hard X

对于 dev 中的每个提交(A1,...,A16):

  • git cherry-pick A1 --no-commit
  • git status
  • 检查你的索引
  • 从索引中删除有问题的二进制文件 git reset HEAD myfolder/mybinary.rpm
  • 删除文件git rm myfolder/mybinary.rpm