Уборка мусора в Git

Удалить все неиспользуемые объекты можно командой

git gc

После объединения ветки, в которой велась разработка, с основной веткой проекта всегда остается указатель на эту ветку. Ваш коллега может удалить её у себя в репозитории и даже удалить её во внешнем репозитории, но ваш локальный репозиторий всё ещё будет хранить информацию об этой ветке.

Удалить все ветки, которых нет во внешнем репозитории можно командой

git remote prune origin

Если даже на какой-либо объект нет явной ссылки, то на протяжении 30 дней на все объекты сохраняется ссылка в reflog . По этому когда производится уборка мусора все коммиты за последний месяц всё равно остаются в репозитории.

Чтобы избавиться от таких недоступных комитов, выполним последовательность команд


git reflog expire --expire=1.minute refs/heads/master
git fsck –unreachable
git gc