origin - Cuando hago "git push", ¿qué significan las estadísticas?(Total, delta, etc.)
git push-u origin master (2)
Aquí hay un ejemplo:
$ git push -u myserver master
Counting objects: 22, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (14/14), 1.89 KiB | 0 bytes/s, done.
Total 14 (delta 10), reused 0 (delta 0)
To myserver.com:git/myrepo.git
ed46414..0cae272 master -> master
Branch master set up to track remote branch master from myserver.
Básicamente, el único número anterior que tiene sentido para mí es el 8 en "usar hasta 8 subprocesos", porque tengo un procesador de cuatro núcleos con hyperthreading, por lo tanto puedo ejecutar 8 subprocesos.
¿Qué hay 22 de? ¿Por qué dice 22 y luego 14, qué pasó con los otros 8? ¿Por qué dice 0 bytes / s, dado que hizo cosas y tomó un tiempo finito? ¿Qué es "total" y "delta" y "reutilizado"?
Detalles sobre el ejemplo: el ejemplo anterior está copiado y copiado de la Terminal en Mac OS X. Hice manualmente un reemplazo para sustituir en "myrepo" y "myserver.com", todo lo demás es literal. El repositorio tiene 910 confirmaciones, y realicé aproximadamente 3 confirmaciones desde el impulso anterior. Las 3 nuevas confirmaciones afectaron al menos 3 archivos. El repositorio contiene más de mil archivos.
Respuesta corta
Esto es simplemente la salida del comando git count-objects -v
para el envío (el mismo comando se llama para la salida cuando gc
, pull
y clone
). Más información en las páginas del manual: git-count-objects(1) .
$ git count-objects -v
...
size: 14 # The "Compressing objects: 100% (14/14)" part (the size in KiB)
in-pack: 22 # The "Counting objects: 22" part (the number of objects)
...
Respuesta larga
Counting objects: 22, done.
Esto es git 22 objetos internos que se cuentan para ese compromiso específico. Casi todo en git es un objeto, y básicamente son blobs guardados en su carpeta .git / objects bajo su respectivo hash. Más información en las páginas del manual: 9.2 Git Internals - Git Objects .
Compressing objects: 100% (14/14), done.
Esto es git comprimir los objetos antes de enviar. El 14/14 es la progresión en KiB de la compresión (14 KiB para comprimir).
Writing objects: 100% (14/14), 1.89 KiB | 0 bytes/s, done.
Esto es git enviar (si es remoto) y escribir los objetos. Los 1.89 KiB | 0 bytes / s es la progresión en KiB y la velocidad (0 bytes / s cuando se termina).
Total 14 (delta 10), reused 0 (delta 0)
Esta es la salida del algoritmo de paquete de archivos en git (ver 9.4 Git Internals - Packfiles ) y es bastante oscura. Básicamente, empaqueta los objetos no utilizados, generalmente el historial anterior, en .git / objects / pack . Después del embalaje, git verifica si puede reutilizar los paquetes (de ahí la parte 0 reutilizada ). La parte delta 0 es la ganancia en KiB del embalaje o de la reutilización.
Git es un sistema de archivos de contenido direccionable. es decir, toma un objeto (archivo, árbol, confirmación) y lo almacena en archivos direccionables mediante hashes.
Supongamos que haces un cambio muy pequeño en el archivo. ¿Debería git almacenar el archivo completo como un objeto diferente? Bueno lo hace Pero ocasionalmente (durante la inserción, extracción), git calcula los cambios de archivos como deltas y los almacena en lugar de archivos completos.
Eso significa que la versión más reciente del archivo se almacena en su totalidad (ya que debería estar disponible más fácilmente), la versión más antigua del mismo archivo es solo un objeto que contiene la diferencia entre los dos y así sucesivamente.
De esta manera, git ahorra espacio mientras aún es capaz de reconstruir el archivo para cualquier revisión que le lances.
Ahora vamos a tu pregunta:
Counting objects: 22, done.
: Git está contando el objeto relacionado con tus confirmaciones que estás presionando.
Total 14 (delta 10)
: Git pudo reducir el número de objetos al encontrar 10 deltas.
reused 0 (delta 0)
: Git puede reutilizar los objetos delta si ya existe el mismo. Por ejemplo, si los cambios similares podrían haberse introducido en algún otro archivo, el delta puede ser similar y reutilizable. Aquí, no había nada que reutilizar.
Writing objects: 100% (14/14), 1.89 KiB | 0 bytes/s, done.
Aquí, Git está enviando (o escribiendo) los objetos a través de la red, y puede ver el progreso y las estadísticas de velocidad mientras lo hace.
Espero que esto ayude.