Git rev-list no puede encontrar commit

Cuando corro:

git verify-pack -v .git\objects\pack\pack-*.idx 

una de las líneas en el resultado contiene:

 651302358b781ab60f364416272e1c35107c974f blob 23980089 23987383 699599322 

Pero si trato de search ese blob con:

 git rev-list --all --objects | grep 651302358b781ab60f364416272e1c35107c974f 

o:

  git rev-list --all --reflog --objects | grep 651302358b781ab60f364416272e1c35107c974f 

Acabo de get un resultado vacío. ¿No debería ser capaz de search cualquier blobs devuelto por verify-pack ?

Basado en lo siguiente, he intentado: crear un clon nuevo, ejecutar git repack ejecutar git gc pero el mismo resultado.

El object puede ser abandonado, es decir, su (s) última (s) reference (s), sean lo que sean, ya no están. Sin embargo, como el object está en un file de package, simplemente no se puede eliminar. Git debe build un package completamente nuevo.

Si usa git repack para comstackr nuevos files de package, los objects sin reference se omitirán de los nuevos packages. (Tenga en count que git gc hará esto automáticamente. Sin embargo, los files .keep pueden mantener los packages antiguos, si ha creado files .keep ).

Editar : como lo señala en un comentario , debe volver a empaquetar con -a o -A para consolidar los packages anteriores. Mientras que git gc automático proporcionará -A en algunos casos, es solo cuando la cantidad de files del package excede gc.autoPackLimit , que por defecto es 50 .

Encontré esto en la parte inferior de git help stash, para encontrar commits sin reference.

 git fsck --unreachable | grep commit | cut -d\ -f3 | xargs git log --merges --no-walk --grep=WIP