如何使用BFG删除受保护的提交

时间:2017-04-05 12:22:07

标签: git bfg-repo-cleaner

使用BFG(https://rtyley.github.io/bfg-repo-cleaner/)清洁回购时,遇到以下情况:

Protected commits
-----------------

These are your protected commits, and so their contents will NOT be altered:

 * commit ******* (protected by 'HEAD')

4 个答案:

答案 0 :(得分:11)

运行BFG:--no-blob-protection为我修复了它。

文档在这里:https://rtyley.github.io/bfg-repo-cleaner/,但我没有看到他们真正称之为移出错误的方法。

注意:在我的情况下,我已经尝试手动删除文件,而不是使用BFG,这使我处于必须使用--no-blob-protection的状态。

答案 1 :(得分:8)

如果你要使用像BFG一样功能强大的工具,我强烈建议你阅读它的文档(这说明了这一点),但要回答你的问题:

BFG默认离开"当前"保持不变。它的作者认为唯一安全的工作流程是手动清理repo的当前状态,测试一切仍然有效,然后使用BFG清理历史记录,同时单独保留当前状态(已经手动修复)。 / p>

如果您认为不必要的用例(因为我经常这样做),可以选择将保护更改为默认(或将其关闭);但是如果你想使用那些,你肯定需要阅读文档。

答案 2 :(得分:0)

首先什么是BFG? BFG 是git-filter-branch的一种更简单,更快速的替代方法,用于清除Git存储库历史记录中的错误数据: *删除疯狂的大文件 *删除密码,凭证和&其他私人数据。

假设,你过去曾犯过一些错误,但现在你已经清理了你的行为。因此,BFG假定您的最新提交是一个很好的提交,没有您想要从历史记录中删除的脏文件。 BFG的这一假设可以保护您的工作,让您高枕无忧,因为您知道BFG只会更改您的回购历史记录,而不会干扰您项目的当前文件。 默认情况下,HEAD分支受到保护,并且其历史记录将被清除,最新的提交(' tip')是受保护的提交,其文件层次结构不会被更改完全没有。

如需更多学习,请参阅 link

答案 3 :(得分:0)

这是一个很晚的答复,但我遇到了类似的问题。

您是否要从git仓库及其历史记录中删除文件?您是不是很着急,没有注意到该文件以最近一次提交的状态存在,默认情况下哪个BFG会将其视为受保护的文件?这是今天我的键盘和椅子之间发生的错误。

如果您想清理存储库,请执行以下操作:(1)使用常用的git命令(例如git rm file; git commit)删除不需要的文件,(2)测试在没有该文件的情况下一切仍然正常,(3)使用bfg重写没有该文件的回购历史记录。