Git - 删除一个 Blob

kee*_*hee 5 git

有没有办法或命令使用其 ID 从 git 中删除 blob

我使用了命令

$ git rev-list --objects --all | git cat-file --batch-check='%(objectname) %(objecttype) %(rest)' | grep '^[^ ]* blob' | cut -d" " -f1,3-
Run Code Online (Sandbox Code Playgroud)

并获得了所有版本的 blob 列表,例如

62f7e0df0b80bce8d0a4cb388be8988df1bec5ef NodeApplication/NodeApplication/public/javascripts/homescript.js
b1d69387fbd4d4e84bbe9eb2c7f59053c0355e11 NodeApplication/NodeApplication/iisnode/index.html
624642d6f2a86844dc145803260537be0fe40090 NodeApplication/NodeApplication/.ntvs_analysis.dat
Run Code Online (Sandbox Code Playgroud)

现在我想删除 blob

NodeApplication/NodeApplication/.ntvs_analysis.dat. 
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

kee*_*hee 3

我使用BFG Cleaner清理不需要的大文件,然后执行

git reflog expire --expire=now --all
git gc --aggressive --prune=now
Run Code Online (Sandbox Code Playgroud)

  • OP询问如何通过ID删除blob。如果没有直接回答问题,请考虑解释如何使用 BFG `--strip-blobs-with-ids` CLI 标志。 (4认同)