Git rev-list не может найти фиксацию

Когда я запускаю:

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

одна из строк на выходе содержит:

 651302358b781ab60f364416272e1c35107c974f blob 23980089 23987383 699599322 

Но если я попытаюсь найти этот blob с:

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

или:

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

Я просто получаю пустой результат. Должен ли я не найти какие-либо капли, возвращаемые verify-pack ?

Основываясь ниже, я попытался: создать новый клон, запустить git repack run git gc но тот же результат.

Объект может быть оставлен, т. Е. Его последняя ссылка (ссылки), что бы они ни были, теперь исчезли. Однако, поскольку объект находится в файле пакета, его нельзя просто удалить. Git должен создать совершенно новый пакет.

Если вы используете git repack для создания новых файлов пакетов, любые неопубликованные объекты будут опущены из новых пакетов. (Обратите внимание, что git gc сделает это автоматически. Однако файлы .keep могут содержать старые пакеты, если вы создали файлы .keep .)

Изменить : как указывает jthill в комментарии , вы должны переупаковать с -a или -A для консолидации старых пакетов. В то время как автоматический git gc будет поставлять -A в некоторых случаях, только тогда, когда количество файлов пакета превышает gc.autoPackLimit , значение по умолчанию – 50 .

Я нашел это в нижней части git help stash, чтобы найти unreferued коммиты.

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