首页 文章

删除后,大对象显示在git包中

提问于
浏览
1

我确定我已经删除了这个文件,但它仍然显示在verify-pack中 . 是什么赋予了?

$ git verify-pack -v .git / objects / pack / pack-5722438014fe04ec9d559810bd7840afb6006858.idx | sort -k 3 -n |尾-3 bfafbf4c4cd9a5ddbcb637a09c183c6dabe7acde BLOB 18960384 1061775 9232588 ec890d28afb338b258727f124e0bfbc11f6c0f0d BLOB 23079936 2279611 1640818 5daf9ca1b4988c240cb9ac9a2d026e5028e9fd8e BLOB 79966293 3803212 4919563 $ git的转速名单--objects --all | grep 5daf9ca1 5daf9ca1b4988c240cb9ac9a2d026e5028e9fd8e DriverLib / json_spirit / Debug / json_spirit_reader.obj $ git log --pretty = oneline --branches - DriverLib / json_spirit / Debut / json_spirit_reader.obj

当我运行git log以找出对象所在的提交时,没有任何显示 . 是什么赋予了?

1 回答

  • 0

    删除文件只记录一个不引用该文件的新提交;此分支上的所有先前提交(包括文件(实际上是存储库中的任何其他提交))仍可能引用文件的blob对象,因此文件的内容不会离开存储库 .

    如果您需要从存储库中完全删除文件(也就是过去的修订版),则需要使用git filter-branch . 请注意,此工具实际上会重写提交,因此它是一个尖锐的工具 - 在尝试使用它重写分支之前,请务必使另一个指针指向要重写的分支的原始提示 - git branchgit tag .

    另一个可能的原因是该文件仍然可以通过the reflog访问某些提交 . 如果是这样,那么要么使reflog到期,要么手动删除不需要的条目并运行git gc --aggressive .

相关问题