(разделение первых двух символов для повышения производительности файловой системы, поскольку теперь не все объекты хранятся в одном каталоге)
Объекты, хранящиеся, как указано выше, называются Loose objects.
Когда вы запускаете свое репо, у вас в основном есть свободные объекты. По мере роста числа он становится неэффективным и хранится в файле пакета. Такие объекты называются упакованными объектами.
git gc
- это то, что вы запускаете для упаковки объектов (обычно теряются ненужные объекты и несколько недель назад, а с помощью опции --prune=<date> вы можете принудительно удалить лишние объекты, которые больше не нужны. Например, когда вы изменяете фиксацию. Старый объект commit больше не нужен.)
Свободные объекты - это более простой формат. Это просто сжатые данные, хранящиеся в одном файле на диске. Каждый объект записывается в отдельный файл.