[О блоге] [наверх] [пред] [2023-11-22 20:32:33+03:00] [b86432a85a70171c5e3cab83ef233d1d054b17b5]
Темы: [git][tip]

git reflog это тоже полноценные ссылки на объекты

Делал тут rebase одного репозитория, схлопывая кучу коммитов в один. При
этом были удаления огромных файлов. git log --stat показывает что кода
осталось с гулькин нос во всей истории, но .git директория занимает
полсотни мегабайт. git gc --aggressive --prune=now всё равно не очищает
то, на что ничего не ссылается (как мне казалось). Никаких веток, тэгов,
remote-ов -- ничего нет лишнего. git fsck --full --unreachable
--dangling тоже ничего не показывают.

Только после всего этого глаз зацепился за наличие reflog-а, который и
после кучи rebase-ов содержал тьму ссылок. Я почему-то думал, что он
именно как log себя ведёт -- в любой момент объекты на которые он
ссылается могут пропасть. Но только после его подчистки (git reflog
expire --all --expire=now), git gc всё схлопнул до 85 килобайт.

    [оставить комментарий]