【发布时间】:2015-08-06 12:12:22
【问题描述】:
有没有办法或命令使用它的 ID 从 git 中删除一个 blob
我使用了命令
$ git rev-list --objects --all | git cat-file --batch-check='%(objectname) %(objecttype) %(rest)' | grep '^[^ ]* blob' | cut -d" " -f1,3-
并获得了所有版本中的 blob 列表,例如
62f7e0df0b80bce8d0a4cb388be8988df1bec5ef NodeApplication/NodeApplication/public/javascripts/homescript.js
b1d69387fbd4d4e84bbe9eb2c7f59053c0355e11 NodeApplication/NodeApplication/iisnode/index.html
624642d6f2a86844dc145803260537be0fe40090 NodeApplication/NodeApplication/.ntvs_analysis.dat
现在我想删除 blob
NodeApplication/NodeApplication/.ntvs_analysis.dat.
我该怎么做?
【问题讨论】:
-
你需要
git filter-branch,见help.github.com/articles/remove-sensitive-data -
实际上我做了 git filter,gc 所有减少我的 repo 大小并推送到 TFS 中的 repo 的东西,TFS 不允许删除文件或 gc,所以只有提交被重写。现在我从 TFS 克隆,它仍然是较旧的大小,但提交被重写(所以如果我过滤分支,那么这些文件不存在)。我什至尝试了 gc 一切
标签: git