使用 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
)
编辑:开始之前请提交或存储您的本地更改。
假设我们有两个分支 master
和 dev
,它们与 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
当我最近尝试将我的提交推送到 github 时,我收到了与此 git --mirror link-to-remote-repo
.
现在我想知道,因为我还不能推送最新的提交,而且我的本地提交历史可能比 github 上的要长。此外,我不确定我所做的所有工作都是在一个分支上而不是在 master 上以及它如何影响我的存储库。
手动解决方案(基于cheery pick
)
编辑:开始之前请提交或存储您的本地更改。
假设我们有两个分支 master
和 dev
,它们与 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