2011-11-18 15 views
193

¿Cuál es una forma sencilla de encontrar el tamaño de mi repositorio de git? Y no me refiero a du -h en el directorio raíz de mi repositorio. Tengo muchos archivos ignorados, por lo que el tamaño sería diferente del tamaño total de mi repositorio. Básicamente, quiero saber la cantidad de datos que se transferirían al clonar mi repositorio.Buscar tamaño de git repo

+0

[¿Ves el tamaño de un repositorio github antes de clonarlo?] (Https://stackoverflow.com/questions/8646517/see-the-size-of-a-github-repo-before-cloning-it) – azzamsa

Respuesta

185

ACTUALIZACIÓN 1.8.3 git introdujo una manera más eficiente para obtener un tamaño áspera: git count-objects -vH (ver respuesta por @VonC)

Para diferentes ideas de "tamaño completo" se puede utilizar:

git bundle create tmp.bundle --all 
du -sh tmp.bundle 

cerca (pero no exigir :)

git gc 
du -sh .git/ 

Con este último, también sería contar:

  • ganchos
  • config (mandos a distancia, las ramas de empuje, ajustes (espacios en blanco, fusión, alias, el usuario detalles etc.)
  • stashes (ver Can I fetch a stash from a remote repo into a local branch? también)
  • caché rerere (que puede obtener considerable)
  • reflogs
  • copias de seguridad (de filtro de rama, por ejemplo) y varias otras cosas (intermedio estado de rebase, biseccionar etc.) de comandos
+0

Gracias ! El primer comportamiento refleja con mayor precisión el tamaño total de clon, pero el segundo también fue bastante cercano. – mschallert

+4

Nota: esta respuesta no está actualizada. Consulte la [respuesta] de VonC (http://stackoverflow.com/a/16163608/241536) en lugar de las versiones de git> = 1.8.3. –

+0

Tenga en cuenta también mi respuesta es una forma más completa, que podría tener su propio mérito. – sehe

89

El GIT

git count-objects -v 

le dará una buena estimación del tamaño del repositorio git. Sin el distintivo -v, solo te dice el tamaño de tus archivos desempaquetados. Este comando puede no estar en su $ PATH, puede que tenga que rastrearlo (en Ubuntu lo encontré en/usr/lib/git-core /, por ejemplo).

Desde la página de manual de Git:

-v, --verbose

Además de la cantidad de objetos sueltos y espacio en disco consumido, informa del número de objetos de paquete , número de paquetes, espacio de disco consumido por esos paquetes y número de objetos que pueden ser eliminados ejecutando git prune-packed.

Su salida será similar a la siguiente:

count: 1910 
size: 19764 
in-pack: 41814 
packs: 3 
size-pack: 1066963 
prune-packable: 1 
garbage: 0 

La línea que está buscando es size-pack. Ese es el tamaño de todos los objetos de confirmación empaquetados, o el tamaño más pequeño posible para el nuevo repositorio clonado.

+4

En mi experiencia, 'git count-objects -v' funciona cuando' git-count-objects -v' no (porque no está en mi PATH). – mwolfetech

+0

No funciona como se esperaba, produce siempre size-pack: 0 – psihodelia

+5

@psihodelia Parece que debe ejecutar 'git gc' antes de ejecutar' git count-objects -v' porque es posible que su repositorio no se haya empaquetado todavía. Consulte la primera respuesta aquí para obtener evidencia: http://stackoverflow.com/questions/3532740/do-i-ever-need-to-run-git-gc-on-a-bare-repo –

164

Tenga en cuenta que, dado que git 1.8.3 (April, 22d 2013):

"git count-objects" aprendidas "--human-readable" alias opción "-H" para mostrar varios números grandes en Ki/Mi/GiB reducido como sea necesario.

Eso podría combinarse con la opción -v mencionado por Jack Morrison en his answer.

git gc 
git count-objects -vH 

(git gc es importante, como se ha mencionado por A-B-B 's answer)

Plus (todavía GIT 1.8.3), la salida es más completa:

"git count-objects -v" aprendieron a informa los paquetes de paquetes temporales sobrantes y otra basura en el almacén de objetos.

0

Si usas git LFS, git count-objects no cuenta tus binarios, sino solo los punteros a ellos.

Si sus archivos LFS son gestionados por Artifactorys, se debe utilizar la API REST:

  • Obtener el API www.jfrog.com desde cualquier motor de búsqueda
  • mirada a obtener almacenamiento Resumen Información
+0

Si bien este enlace puede responder a la pregunta, se desaconsejan las respuestas de enlace en Stack Overflow, puede mejorar esta respuesta tomando partes vitales del enlace y poniéndolo en su respuesta, esto asegura que su respuesta siga siendo una respuesta si el enlace se cambia o se elimina :) – WhatsThePoint