使用BFG Cleaner删除历史记录不起作用

时间:2019-06-24 15:07:54

标签: bfg-repo-cleaner

使用BFG删除已删除文件夹的历史记录

我正在使用BFG从回购中完全删除已删除文件夹的历史记录

git rev-list --all --objects-路径/到/目录/到/删除| git cat-file --batch-check ='%(对象名)%(对象类型)%(其余)'| grep -Pe'^ \ w + blob'|剪切-d''-f1> ./to-delete.txt java -jar bfg.jar --no-blob-protection --strip-blobs-with-ids ./to-delete.txt

我得到了对象ID的列表,但是当我使用以下命令将对象ID传递给bfg时,它将引发错误

java -jar bfg.jar --no-blob-protection --strip-blobs-with-ids ./to-delete.txt

错误: java.exe:错误:给定“ RCC.txt”时,选项--strip-blobs-with-ids失败。 MainException:类org.eclipse.jgit.errors.InvalidObjectIdException(**无效的ID:** ?? e 4 c 8 e 1 bb 1 7 8 2 4 8 7 1 9 2 9 9 b 0 1 5 b 1 5 0 8 3 9 2 7 bdeff 5 b) 在G:\ Dev_Migration_Scripts \ RepoCleaner_New.ps1:29 char:35

2 个答案:

答案 0 :(得分:0)

尝试bfg -B 1 --no-blob-protection

阅读BFG usage instructionsthis guide

git rm -r --cached .从Git删除所有缓存。这总是可以解决我的问题。

其中git reset --hard仅保留已提交的文件,git clean -d -x -f删除未跟踪的文件,包括目录(-d)和git(-x)忽略的文件。

阅读有关git rm here,有关git clean here和有关git reset here的信息。

我知道最后一个不是来自BFG,但它们可能会为您提供帮助。

答案 1 :(得分:0)

我使用了与您相同的技术,并且在 BFG 为使用 git rev-listgit cat-file 生成的 blob 哈希引发 InvalidObjectIdException 时遇到了同样的问题

问题在于文本文件的编码,如果您查看无效的 ID **??e 4 c 8 e 1 b b 1 7 8 2 4 8 7 1 9 2 9 9 b 0 1 5 b 1 5 0 8 3 9 2 7 b d e f f 5 b,您可以看到额外的字符,如果哈希正确但未找到,它只会是 e4c8e1bb178248719299b015b15083927bdeff5b。< /p>

在我的例子中,我使用 Notepad++ 来过滤我想删除的 blob,并且由于某种原因编码切换到 UCS-2 LE BOM。切换回 UTF-8 解决了该问题。