На какие "свободные объекты" ссылается Git GUI? - PullRequest
196 голосов
/ 19 апреля 2011

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

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

Ответы [ 2 ]

131 голосов
/ 19 апреля 2011

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

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca

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

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

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

 git gc

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

36 голосов
/ 19 апреля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...