2011-04-18 9 views
150

Cuando abro el Git GUI, aparece un mensaje emergente que hace referencia al loose objects. Hice git gc y eso eliminó el mensaje.¿Cuáles son los "objetos sueltos" a los que se refiere la GUI de Git?

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

+0

Puede simplemente hacer clic en ** "Sí" ** en el mensaje emergente cuando le pregunte si los objetos sueltos deben empacarse ahora. * Git GUI * ejecutará 'git gc' para usted, con una bonita barra de progreso de GUI (aunque se muestra como bloqueada la mayor parte del tiempo). – ADTC

Respuesta

107

Un objeto (BLOB, los árboles, y se compromete) con SHA decir - 810cae53e0f622d6804f063c04a83dbc3a11b7ca se almacenará en

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca 

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

Los objetos almacenados como se indica anteriormente se denominan objetos sueltos.

Cuando inicia con su repositorio, en su mayoría tiene objetos sueltos. A medida que el número aumenta, se vuelve ineficiente y se almacenan en un archivo de paquete. Dichos objetos se llaman objetos empaquetados.

es lo que se ejecuta para embalar objetos (por lo general los objetos sueltos que no son necesarios y pocas semanas de edad también se eliminan y con --prune=<date> opción que puede forzar a eliminar los objetos sueltos que ya no son necesarios. Al igual cuando se modifique una commit. El antiguo objeto commit ya no es necesario.)

+3

La opción '--prune' está habilitada de forma predeterminada, y como' git gc' se activa automáticamente por el uso común (por ejemplo, 'commit'), generalmente no tiene que preocuparse por esto. No uso git gui, y no puedo encontrar exactamente dónde se desencadena en la fuente, pero o bien hace su propia comprobación, o simplemente intercepta el 'gc' provocado por un comando llamado. Sin duda, no hay nada de qué preocuparse, simplemente causado por el uso normal. – Cascabel

+7

¿Hay algún inconveniente en empaquetar objetos sueltos? Si no, ¿por qué Git no lo hace automáticamente? –

+9

No creo que sea cierto que suceda automáticamente. Me comprometo a menudo pero 'git gui' mencionó que tenía 50,000 objetos sueltos (y me he estado preguntando por qué git era tan lento, gran proyecto durante ~ 4 años sin manual gc) – Kevin

Cuestiones relacionadas