¿Con qué frecuencia debe usar git-gc?
La página del manual simplemente dice:
Se alienta a los usuarios a ejecutar esta tarea de forma regular dentro de cada repositorio para mantener una buena utilización del espacio en disco y un buen rendimiento operativo.
¿Hay algunos comandos para obtener algunos recuentos de objetos para averiguar si es hora de gc?
gc.autodetach
(Git 2.0 Q2 2014) puede ayudar a ejecutargit gc --auto
sin bloquear al usuario. mira mi respuesta a continuación .Respuestas:
Depende principalmente de cuánto se use el repositorio. Con un usuario que se registra una vez al día y una operación de sucursal / fusión / etc. una vez a la semana, probablemente no necesite ejecutarlo más de una vez al año.
Con varias docenas de desarrolladores trabajando en varias docenas de proyectos cada uno ingresando 2-3 veces al día, es posible que desee ejecutarlo todas las noches.
Sin embargo, no hará daño ejecutarlo con más frecuencia de la necesaria.
Lo que haría es ejecutarlo ahora, luego dentro de una semana tomar una medida de la utilización del disco, ejecutarlo nuevamente y medir la utilización del disco nuevamente. Si cae un 5% de tamaño, ejecútelo una vez por semana. Si cae más, ejecútelo con más frecuencia. Si cae menos, ejecútelo con menos frecuencia.
fuente
Tenga en cuenta que la desventaja de recolectar basura en su repositorio es que, bueno, la basura se recolecta. Como todos sabemos como usuarios de computadoras, los archivos que consideramos basura en este momento podrían resultar muy valiosos tres días en el futuro. El hecho de que git mantenga la mayor parte de sus escombros ha salvado mi tocino varias veces: al examinar todas las confirmaciones colgantes, he recuperado mucho trabajo que accidentalmente había enlatado.
Así que no seas demasiado fanático de tus clones privados. Hay poca necesidad de ello.
OTOH, el valor de la capacidad de recuperación de datos es cuestionable para los repositorios utilizados principalmente como controles remotos, por ejemplo. el lugar donde todos los desarrolladores empujan y / o sacan. Allí, puede ser sensato iniciar una ejecución de GC y un reempaque con frecuencia.
fuente
git gc --help
, específicamente la--prune
opción). También se mencionagc.reflogExpire
, lo que me lleva a creer que no se recopilará ningún compromiso que haya visitado en los últimos 90 días. (Mi versión git: v1.7.6)Las versiones recientes de git ejecutan gc automáticamente cuando es necesario, por lo que no debería tener que hacer nada. Consulte la sección Opciones de man git-gc (1) : "Algunos comandos de git ejecutan git gc --auto después de realizar operaciones que podrían crear muchos objetos sueltos".
fuente
gc --auto
.Si usa Git-Gui , le indica cuándo debe preocuparse:
El siguiente comando traerá un número similar:
Excepto que, desde su origen , git-gui hará los cálculos por sí mismo, en realidad contará algo en la
.git/objects
carpeta y probablemente traiga una aproximación (¡no sétcl
leer eso correctamente!).En cualquier caso, parece dar la advertencia basada en un número arbitrario de alrededor de 300 objetos sueltos.
fuente
Git-Gui
ycount-objects
no son exactamente buenas respuestas a la pregunta aquí ... ¡Pero deberían serlo!Déjalo en un trabajo cron que se ejecuta todas las noches (¿por la tarde?) Cuando duermes.
fuente
Uso git gc después de hacer un pago grande y tengo muchos objetos nuevos. Puede ahorrar espacio. Por ejemplo, si realiza un pago de un gran proyecto SVN con git-svn y realiza un git gc, generalmente ahorra mucho espacio
fuente
Puede hacerlo sin interrupción, con la nueva configuración (Git 2.0 Q2 2014)
gc.autodetach
.Ver commit 4c4ac4d y commit 9f673f9 ( Nguyễn Thái Ngọc Duy, también conocido como pclouds ):
Sin embargo, desde esa versión 2.0, hubo un error: git 2.7 (cuarto trimestre de 2015) se asegurará de no perder el mensaje de error .
Ver commit 329e6e8 (19 de septiembre de 2015) por Nguyễn Thái Ngọc Duy (
pclouds
) .(Fusionada por Junio C Hamano -
gitster
- en commit 076c827 , 15 oct 2015)fuente
Esta cita está tomada de; Control de versiones con Git
fuente
git commit --amend
). Esto se puede verificar congit log --reflog
. Empujé una rama al repositorio remoto y revisé mi árbol nuevamente; los compromisos inalcanzables todavía estaban allí. Aparentementegit gc
no se ejecutó cuando ocurrió este empuje. ...?Lo uso cuando hago un gran commit, sobre todo cuando elimino más archivos del repositorio ... después, los commits son más rápidos
fuente
No tiene que usarlo
git gc
muy a menudo, porquegit gc
(Recolección de basura) se ejecuta automáticamente en varios comandos de uso frecuente:Fuente: mejores prácticas y preguntas frecuentes de git gc
fuente