Git запускает сборку мусора автоматически :
• Если в хранилище слишком много незакрепленных объектов
• Когда происходит отправка в удаленный репозиторий
• После некоторых команд, которые могут ввести много свободных объектов
• Когда срок действия некоторых команд, таких как git reflog, истекает
И, наконец, сборка мусора происходит, когда вы явно запрашиваете ее с помощью команды git gc. Но когда это должно быть? На этот вопрос нет однозначного ответа, но есть хороший совет и лучшая практика.
Вам следует рассмотреть возможность запуска git gc вручную в нескольких ситуациях:
• Если вы только что завершили ветку git filter. Вспомните, что ветвь фильтра переписывает много коммитов, вводит новые и оставляет старые на ссылке, которую следует удалить, когда вы будете удовлетворены результатами. Все эти мертвые объекты (на которые больше не ссылаются, так как вы только что удалили одну ссылку, указывающую на них) должны быть удалены с помощью сборки мусора.
• После некоторых команд, которые могут ввести много незакрепленных объектов. Например, это может быть большой попыткой перебазирования.
И с другой стороны, когда вы должны быть осторожны с сборкой мусора?
• Если есть осиротевшие рефери, которых вы можете восстановить
• В контексте git rerere и вам не нужно сохранять разрешения навсегда
• В контексте только тегов и веток, достаточных для того, чтобы Git постоянно сохранял коммит
• В контексте поиска FETCH_HEAD (прямой URL-адрес с помощью git fetch), поскольку они немедленно подвергаются сборке мусора.