2010-05-28 16 views
10

Mi archivo .git ha crecido a 229Mb y me pregunto cuál es la mejor manera de reducir el tamaño. Sé sobre git gc y lo he estado usando bastante. No estoy totalmente seguro de cómo funciona Git, pero sé que hay información empaquetada allí que ya no necesito. Al igual, sé que ya no necesito las primeras cinco ramas guardadas. ¿Hay alguna forma de borrar por completo las ramas o compromisos realmente antiguos o algo así?Administrar tamaño del archivo .git

Respuesta

14

Si desea mantener su (accesible) comprometerse historia intacta, entonces caduca, vuelva a embalar, ciruela, y limpieza de la memoria:

git reflog expire --expire=0 --all 
git repack -ad 
git prune 
git gc 

Este debería ser el tamaño mínimo que puede conseguir su cesión temporal y mantenga su historia comprometerse.

Si no, es decir, si desea o no le molesta comenzar de nuevo con el estado actual del repositorio como el compromiso inicial, entonces el enfoque de Peter Tillemans lo hará.

+0

Esto parece un buen enfoque, ¡gracias! – DavidP6

+1

'git gc' ejecuta automáticamente' git prune', como se menciona en esta página de documentación, en el ejemplo: https://www.kernel.org/pub/software/scm/git/docs/git-prune.html – kontur

1

Lo más fácil sería hacer un

git clone --depth 1 your_old_repo 

en una nueva ubicación y luego cambiar de nuevo en su lugar.

ver también git faq

+0

La clonación superficial tiene una funcionalidad limitada, desafortunadamente. –

1

lo haría un poco de recolección de basura con git gc

+0

Con la opción '--prune = ', presumiblemente. – Cascabel

2

Tiene algunas técnicas en "Reduce git repository size", pero menciono también en ella que git gc alone can increase the size of the repo!

Así que alguna rama filtro (también se hace referencia en that question) puede ser necesaria, si nadie está tirando activamente desde su repositorio.

Un factor que tiende a aumentar rápidamente el tamaño de un repositorio de Git es la versión de muchos binarios. Es uno de Git limits, así que trate de:

  • versión tal objeto grande en su propio repo Git, referenciado como submódulos
  • o versión ellos en un repositorio externo envíos, como un repositorio Maven (es decir " no en un repositorio de Git ")
Cuestiones relacionadas