¿Cuáles son los "objetos sueltos" a los que se refiere la GUI de Git?


Cuando abro el Git GUI, recibo un mensaje emergente que se refiere a loose objects. Lo hice git gc y eso eliminó el mensaje.

¿Qué son loose objects y cómo podría evitar que esto vuelva a ocurrir?

 175
git
Author: gturri, 2011-04-19

2 answers

Un objeto (blobs, trees y commits) con SHA say - 810cae53e0f622d6804f063c04a83dbc3a11b7ca se almacenará en

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca

(la división en los dos primeros caracteres para mejorar el rendimiento del sistema de archivos, ya que ahora no todos los objetos se almacenan en el mismo directorio)

Los objetos almacenados como los anteriores se denominan objetos sueltos.

Cuando inicias con tu repositorio, en su mayoría tienes objetos sueltos. A medida que el número va alto, se vuelve ineficiente y se almacenan en un paquete de archivo. Tales objetos se llaman objetos empaquetados.

 git gc

Es lo que ejecuta para empaquetar objetos (Generalmente los objetos sueltos que no son necesarios y que tienen pocas semanas de antigüedad también se eliminan y con la opción --prune=<date> puede forzar la eliminación de objetos sueltos que ya no son necesarios. Como cuando modificas un commit. El viejo objeto commit ya no es necesario. )

 117
Author: manojlds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-27 18:38:32

El libro de Git lo explica bastante bien: https://git-scm.com/book/en/v2/Git-Internals-Packfiles

Los objetos sueltos son el formato más simple. Son simplemente los datos comprimidos almacenado en un solo archivo en el disco. Cada objeto escrito en un archivo separado.

 33
Author: Mohamed Mansour,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-04 23:09:12