К каким "незакрепленным объектам" относится графический интерфейс Git?

Когда я открываю Git GUI, я получаю всплывающее сообщение, которое относится к loose objects, я сделал git gc и это удалило сообщение.

Что loose objects и как я мог предотвратить это снова?

2 ответа

Решение

Объект (BLOB, деревья и коммиты) с SHA скажем - 810cae53e0f622d6804f063c04a83dbc3a11b7ca будет храниться в

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca

(разделение на первые два символа для повышения производительности файловой системы, поскольку теперь не все объекты хранятся в одном каталоге)

Объекты, хранящиеся как указано выше, называются свободными объектами.

Когда вы запускаете репо, у вас есть в основном свободные объекты. Поскольку число увеличивается, оно становится неэффективным, и они сохраняются в файле пакета. Такие объекты называются упакованными объектами.

 git gc

это то, что вы запускаете, чтобы упаковать объекты (Обычно потерянные объекты, которые не нужны и несколько недель назад также удаляются и с --prune=<date> Опцию вы можете принудительно удалить свободные объекты, которые больше не нужны. Например, когда вы изменяете коммит. Старый объект фиксации больше не нужен.)

Книга Git объясняет это довольно хорошо: https://git-scm.com/book/en/v2/Git-Internals-Packfiles

Свободные объекты - более простой формат. Это просто сжатые данные, хранящиеся в одном файле на диске. Каждый объект записан в отдельный файл.

Другие вопросы по тегам