From b86432a85a70171c5e3cab83ef233d1d054b17b5 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 22 Nov 2023 20:32:33 +0300 Subject: [PATCH] =?utf8?q?git=20reflog=20=D1=8D=D1=82=D0=BE=20=D1=82=D0=BE?= =?utf8?q?=D0=B6=D0=B5=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE=D1=86=D0=B5=D0=BD?= =?utf8?q?=D0=BD=D1=8B=D0=B5=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B8=20?= =?utf8?q?=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Делал тут 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 килобайт. -- 2.50.0