Bitbucket: eliminar carpeta del historial de Git

Al alojar Git en Bitbucket, hay un límite estricto de 2 GB; si se excede, solo tiene acceso de solo lectura al repositorio. Para evitar esto, puede, por ejemplo, eliminar de forma retroactiva carpetas o archivos grandes de sus confirmaciones. Pero también en otros casos (si los datos de acceso ingresaron al historial o node_modules se han deslizado hacia el maestro), debe manipular retrospectivamente el historial de Git, al contrario de su naturaleza.


Bitbucket ha escrito un artículo detallado sobre esto. Para ejecutar todo en un caso, primero creamos un nuevo repositorio:

historial de bitbucket limpio

Luego clonamos el repositorio en una carpeta vacía en la máquina local.:

6ab7686fc508ce87c52b10bb5d01ee51

Ahora creamos dos subcarpetas con archivos de contenido aleatorio:

6ab7686fc508ce87c52b10bb5d01ee51

Ahora estamos presionando al maestro:

6ab7686fc508ce87c52b10bb5d01ee51

Ahora casi hemos alcanzado el límite estricto de 2 GB en Bitbucket:

historial de bitbucket limpio

También podemos verificar esto localmente (ver "paquete de tamaño"):

6ab7686fc508ce87c52b10bb5d01ee51

historial de bitbucket limpio

La tarea ahora es eliminar retroactivamente "foo" del repositorio para reducir su tamaño a la mitad. Para hacer esto, primero editamos el HEAD actual y escribimos la carpeta en gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Finalmente, eliminamos la carpeta con la ayuda de BFG Repo Cleaner (BFG requiere un JRE actual en el sistema como requisito del sistema):

6ab7686fc508ce87c52b10bb5d01ee51

Ahora podemos ver el resultado localmente.:

6ab7686fc508ce87c52b10bb5d01ee51

historial de bitbucket limpio

Sin embargo, el tamaño del repositorio no ha cambiado en Bitbucket porque el recolector de basura aún no se ha ejecutado de forma remota y bitbucket no realiza un "git gc" con cada inserción.:

historial de bitbucket limpio

Esto también lo confirma el soporte:

historial de bitbucket limpio

Por lo tanto, es mejor enviar una solicitud directamente a support@bitbucket.org para ejecutar manualmente "git gc" en el repositorio. Después de poco tiempo, esto también lo hizo el equipo de soporte.:

historial de bitbucket limpio

Si mueve "recientemente" el repositorio a otra computadora, solo 0.9 GB terminarán en el disco. Si alguien tiene la versión de 1.8 GB disponible localmente, un "git pull" seguido de "git gc" es suficiente.

Atrás