2012-01-23 9 views
11

Realmente no me gusta tener la carpeta monstruosa .git (2GB) y no me importan los cambios en 2002 y no quiero crear un nuevo repositorio Entonces, ¿qué debo hacer para limpiar .git/log?¿Es posible limpiar el registro de git en .git cuando se está convirtiendo en grande

Tenga en cuenta que lo quiero no solo localmente, la próxima vez que quiera clonar el repositorio sin historial o con historial desde 2011 año.

gracias

+1

Eche un vistazo a [esta respuesta] (http://stackoverflow.com/a/8483112/357743). No sé cuánto reducirá el tamaño del directorio '.git', pero es la manera más simple de probar que no hará ningún cambio en el historial de su repositorio. Las respuestas a [esta pregunta] (http://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository) pueden ser útiles también. –

Respuesta

6

Desde su pregunta, creo que quieres algo así como this.

git-rebase(1) hace exactamente eso.

$ git rebase -i HEAD~5 

git awsome-ness contiene un ejemplo.

  1. No utilice git-rebase en commits públicos (remotos).
  2. Asegúrese de que su directorio de trabajo esté limpio (commit o stash sus cambios actuales).
  3. Ejecute el comando anterior. Lanza su $EDITOR.
  4. Reemplazar pick antes de C y D por squash. Fundirá C y D en B. Si desea eliminar una confirmación, simplemente elimine su línea.

Si se pierden, Tipo:

$ git rebase --abort 

Sin embargo, a copmress la carpeta .git con seguridad, lo anterior no es recomendable. Puede intentar lo siguiente como se menciona en un comment por Linus.

git repack -a -d --depth=250 --window=250 

donde esa cosa profundidad se trata sólo de la profundidad de las cadenas delta pueden ser (hacerlas más largas de la historia antigua - vale la pena el espacio de arriba), y la cosa ventana es de lo grande de una ventana de objeto queremos que cada delta candidato para escanear.

+1

'git rebase' reescribirá por completo el historial de commits, causando muchos problemas para todas las personas que ya han sacado de ese repositorio. No creo que esa sea la forma correcta de reducir el tamaño del directorio '.git'. –

+0

No estoy seguro, pero después de volver a embalar, nada está cambiando y ni siquiera necesito empujar. La próxima vez quiero clonar el repositorio ya limpio. – Cynede

+0

Como no desea realizar un seguimiento de las confirmaciones anteriores, creo que 'git-rebase' es la elección correcta para usted. Sin embargo, puedes intentar usar 'git gc --aggressive --prune' primero para ver si ayuda. –

1

Tal vez se puede tratar con:

$ git gc --auto 

página hombre dice:

realiza una serie de tareas de mantenimiento en el repositorio actual, tales como la compresión de las revisiones de archivos (para reducir el espacio en disco y aumento rendimiento) y la eliminación de objetos inalcanzables que pueden haberse creado a partir de las invocaciones anteriores de git add.

Se recomienda a los usuarios realizar esta tarea de forma regular dentro de cada repositorio para mantener una buena utilización del espacio en disco y un buen rendimiento operativo.

Es solo una sugerencia, nunca tengo la necesidad de usar gc.

+0

no hace mucho Creo que necesito simplemente eliminar el historial o el historial anterior a alguna fecha. – Cynede

3

Ejecute git gc --help para obtener la documentación.
En su caso git gc --aggressive --prune será bueno.

Cuestiones relacionadas