Simplemente haga clic en "Sí" en el mensaje emergente cuando le pregunte si los objetos sueltos deben empacarse ahora. Git GUI se ejecutará git gcpara usted, con una buena barra de progreso GUI (aunque se muestra como atascado la mayor parte del tiempo).
ADTC
Respuestas:
144
Un objeto (blobs, árboles y commits) con SHA say - 810cae53e0f622d6804f063c04a83dbc3a11b7ca se almacenará en
(la división en los dos primeros caracteres para mejorar el rendimiento del sistema de archivos ya que ahora no todos los objetos están almacenados en el mismo directorio)
Los objetos almacenados como se mencionan anteriormente se denominan objetos sueltos.
Cuando comienzas con tu repositorio, en su mayoría tienes objetos sueltos. A medida que el número aumenta, se vuelve ineficiente y se almacenan en un archivo de paquete. Tales objetos se llaman objetos empaquetados.
git gc
es lo que ejecuta para empacar objetos (por lo general, los objetos sueltos que no son necesarios y de pocas semanas de edad también se eliminan y con la --prune=<date>opción puede forzar la eliminación de objetos sueltos que ya no se necesitan. Como cuando se modifica una confirmación. El objeto de confirmación anterior no es ya se necesita)
La --pruneopción está habilitada de manera predeterminada, y dado que git gcse activa automáticamente por el uso común (p commit. Ej. ), Generalmente no tiene que preocuparse por esto. No uso git gui, y no puedo encontrar exactamente dónde se dispara en la fuente, pero o bien hace su propia verificación, o simplemente intercepta el gcdisparado por un comando llamado. Sin embargo, no hay nada de qué preocuparse, solo por el uso normal.
Cascabel
21
¿Hay algún inconveniente en empacar objetos sueltos? Si no, ¿por qué Git no lo hace automáticamente?
Louis Rhys
13
No creo que sea cierto que suceda automáticamente. Me comprometo a menudo, pero 'git gui' mencionado tenía 50,000 objetos sueltos (y me he estado preguntando por qué git fue tan lento, un gran proyecto durante ~ 4 años sin gc manual)
Kevin
1
@Kevin ¿El rendimiento de su gran proyecto mejoró después de ejecutarse git gcmanualmente? Creo que debería mejorar, porque los objetos sueltos son ineficientes, y 50,000 es un número muy grande. También descubrí que el embalaje reduce en gran medida el espacio utilizado por la .gitcarpeta también.
ADTC
3
@LouisRhys, "Cuando los objetos se escriben en el disco, a menudo está en formato suelto, ya que ese formato es menos costoso de acceder. Sin embargo, eventualmente querrá ahorrar espacio al empacar los objetos" - de Git Book enlace en la respuesta a continuación
Los objetos sueltos son el formato más simple. Son simplemente los datos comprimidos almacenados en un solo archivo en el disco. Cada objeto escrito en un archivo separado.
git gc
para usted, con una buena barra de progreso GUI (aunque se muestra como atascado la mayor parte del tiempo).Respuestas:
Un objeto (blobs, árboles y commits) con SHA say - 810cae53e0f622d6804f063c04a83dbc3a11b7ca se almacenará en
(la división en los dos primeros caracteres para mejorar el rendimiento del sistema de archivos ya que ahora no todos los objetos están almacenados en el mismo directorio)
Los objetos almacenados como se mencionan anteriormente se denominan objetos sueltos.
Cuando comienzas con tu repositorio, en su mayoría tienes objetos sueltos. A medida que el número aumenta, se vuelve ineficiente y se almacenan en un archivo de paquete. Tales objetos se llaman objetos empaquetados.
es lo que ejecuta para empacar objetos (por lo general, los objetos sueltos que no son necesarios y de pocas semanas de edad también se eliminan y con la
--prune=<date>
opción puede forzar la eliminación de objetos sueltos que ya no se necesitan. Como cuando se modifica una confirmación. El objeto de confirmación anterior no es ya se necesita)fuente
--prune
opción está habilitada de manera predeterminada, y dado quegit gc
se activa automáticamente por el uso común (pcommit
. Ej. ), Generalmente no tiene que preocuparse por esto. No uso git gui, y no puedo encontrar exactamente dónde se dispara en la fuente, pero o bien hace su propia verificación, o simplemente intercepta elgc
disparado por un comando llamado. Sin embargo, no hay nada de qué preocuparse, solo por el uso normal.git gc
manualmente? Creo que debería mejorar, porque los objetos sueltos son ineficientes, y 50,000 es un número muy grande. También descubrí que el embalaje reduce en gran medida el espacio utilizado por la.git
carpeta también.El Libro Git lo explica bastante bien: https://git-scm.com/book/en/v2/Git-Internals-Packfiles
fuente