bfg.jar(清除 GIT commit 所有历史记录)

清除所有commit记录:BFG Repo-Cleaner(需要安装java SDK才能运行)

  • cd bfg.jar所在目录
  • java -jar bfg.jar --strip-blobs-bigger-than 50M git本地仓库目录
  • cd git本地仓库目录
  • git reflog expire --expire=now --all && git gc --prune=now --aggressive
  • git push

详情:处理GitHub不允许上传大于100M文件问题

要删除 Git 中的旧提交记录,具体方法取决于你想要删除的内容类型和范围。以下是几种常见场景及其对应的命令: ### 1. 删除最近的一次提交(保留更改) 如果你只是想删除最近一次提交,并且希望保留该提交中的文件更改以便再次修改,可以使用以下命令: ```bash git reset --soft HEAD~1 ``` 该命令会将 HEAD 指针回退到上一个提交,但保留工作目录和暂存区的内容。 ### 2. 删除最近的一次提交(不保留更改) 如果你希望完全删除最近一次提交,并丢弃所有更改,可以使用以下命令: ```bash git reset --hard HEAD~1 ``` 该命令会将 HEAD 指针回退到上一个提交,并且清除工作目录和暂存区的所有更改[^2]。 ### 3. 删除指定提交(本地分支) 如果你需要删除某个特定的提交(而不是最近的提交),可以使用交互式变基(interactive rebase)来移除指定的提交: ```bash git rebase -i HEAD~n ``` 其中 `n` 是你要查看的最近提交数量。在弹出的编辑器中,找到你想删除的提交行,将其前面的 `pick` 改为 `drop` 或简写为 `d`,然后保存并退出编辑器。Git 将按照新的指令重新应用提交历史[^1]。 ### 4. 彻底删除包含敏感信息的提交(适用于远程仓库) 如果某些提交已经推送到远程仓库,并且你需要从整个项目历史中彻底删除这些提交(例如因为包含了敏感信息),可以使用 `git filter-branch` 或更现代的工具 **BFG Repo-Cleaner**。 #### 使用 `git filter-branch` 删除特定文件的历史记录 ```bash git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <file>' --prune-empty --tag-name-filter cat -- --all ``` 该命令会从所有分支和标签中删除指定文件的历史记录,并清理空的提交[^1]。 #### 使用 BFG Repo-Cleaner 删除敏感数据 BFG Repo-Cleaner 是一个更简单、高效的工具,适合大规模清理操作。基本使用步骤如下: 1. 下载 BFG JAR 文件。 2. 运行以下命令清理仓库: ```bash java -jar bfg.jar --delete-files <file> my-repo.git ``` 3. 清理完成后,运行以下命令更新引用并推送更改: ```bash cd my-repo.git git reflog expire --expire=now --all && git gc --prune=now --aggressive git push --force --all ``` ### 5. 强制推送修改后的提交历史 由于上述操作会重写提交历史,因此在推送时需要使用强制推送选项: ```bash git push --force origin <branch-name> ``` 请注意,强制推送可能会影响其他协作者,务必确保团队成员了解这一变更并同步更新他们的本地分支。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值