Стандартное поведение
Git G C не имеет никаких параметров для контроля того, что собирается таким образом. По умолчанию он будет упаковывать распакованные объекты в пакет и упаковывать объекты в большой пакет, если пакетов слишком много (по умолчанию 50).
Если вы хотите создать определенный c оптимизированный пакет и что вы хотите сохранить несмотря ни на что, вы можете сделать что-то вроде этого:
tmpdir=$(mktemp -d)
# Adjust to print whatever refs you want.
echo refs/heads/master | git pack-objects --revs --progress $tmpdir/pack
touch "$tmpdir/$(basename "$tmpdir/"*.pack .pack).keep"
mv "$tmpdir/"* .git/objects/pack/
rm -fr "$tmpdir"
, который упакует все ссылки (в моем примере, master
) в один пакет и пометит его как хранится с файлом .keep
. Другие объекты по-прежнему будут упакованы при достаточном количестве свободных объектов.
Если вы хотите перепаковать репозиторий, удалите существующий файл .keep
и повторите эти команды.
Если вы хотите более агрессивная упаковка, вы можете передать дополнительные аргументы git pack-objects
, который будет создавать такую упаковку.
Если вы используете стандартное решение для хостинга, то сторона сервера должна позаботиться об автоматической упаковке на сервере при разумный интервал.