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:
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:
También podemos verificar esto localmente (ver "paquete de tamaño"):
6ab7686fc508ce87c52b10bb5d01ee51
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
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.:
Esto también lo confirma el soporte:
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.:
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.