【发布时间】:2012-08-31 21:47:55
【问题描述】:
我还有另一个例子,在没有初始提交的情况下执行git rm -rf。 (我意识到我添加了很多无用的文件,并想添加一些过滤器。)
现在我剩下 23000 个没有树的悬空 blob,但有完整的 Git 历史记录!
我将使用脚本循环访问 blob 名称(使用 git show 'blobname' > 'filename'),但我可以将这些文件名从历史记录关联到 blob 吗?
【问题讨论】:
-
嗯,我原本以为你输入了
rm -rf。还是可以取回来的,需要找到根树对象。 -
检查这些对象的类型 - 是所有 blob 吗?还是那里有树?无论哪种方式,您都可以使用
git cat-file <blob>来查看其中包含的内容以进行比较。还可以看看他们的日期戳,以防万一。 -
@Alex:我如何找到根树对象?是在其中一个blob中吗?
-
@Philip:确实,它们都是 blob。我可以使用
git cat-file,但要与什么比较?我只有文件名列表。 -
听起来有点像你遇到了真正的问题。我没有意识到
git add没有创建本地树,而是等到提交,在索引中留下详细信息。不幸的是,“git rm”从索引中清除了所有这些。我想是时候将 blob 分类到 bin、ascii 和 utf8 中,以尝试减少列表大小 - 23,000 是很多垃圾。
标签: git blobs git-dangling