我确定我已删除此文件,但它仍显示在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 rev-list --objects --all | grep 5daf9ca1
5daf9ca1b4988c240cb9ac9a2d026e5028e9fd8e DriverLib / json_spirit / Debug / json_spirit_reader.obj$ git log --pretty = oneline --branches - 的DriverLib / json_spirit /登场/ json_spirit_reader.obj
当我运行git log以找出对象所在的提交时,没有任何显示。是什么给了什么?
答案 0 :(得分:0)
删除文件只会记录一个不引用该文件的新提交;此分支上的所有先前提交(包括文件(实际上是存储库中的任何其他提交))仍可能引用文件的blob对象,因此文件的内容不会离开存储库。
如果您需要从存储库中完全删除文件(也就是过去的修订版),则需要使用git filter-branch
。请注意,此工具实际上会重写提交,因此它是一个 sharp 工具 - 在尝试使用它重写分支之前,请务必另外指向要重写的分支的原始提示 - {{ 1}}或git branch
。
另一个可能的原因是该文件仍由the reflog可访问的某些提交引用。如果是这样,那么要么使reflog失效,要么手动删除不需要的条目并运行git gc --aggressive
。