使用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
答案 0 :(得分:0)
尝试bfg -B 1 --no-blob-protection
阅读BFG usage instructions和this 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-list
和 git 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
解决了该问题。