#Fixed 2: Eliminar archivos del histórico de Git.

Manu Pijierro
2 min readMay 19, 2017

--

En más de una ocasión me he encontrado con este problema. Ficheros en un repositorio que no deberían estar ahí. Bien por despiste o por error, podríamos incluir ficheros de contraseñas, copias de seguridad…etc., que realmente no querríamos que estuvieran ahí. A mi me ha pasado alguna vez jijiji.

Después de buscar en internet comandos en Git para modificar el historial, encontré una herramienta para realizar este tipo de operaciones. Dicha herramienta se llama BFG Repo-Cleaner y es bastante sencilla de utilizar para el problema complejo que resuelve. En su página podéis encontrar bastante información al respecto.

Problema

Resumiendo, un repositorio Git contenía en el histórico archivos de gran tamaño que no deberían estar ahí.

Solución

Los pasos que seguí fueron los siguientes (que como digo, están claramente indicados en la página de BFG):

  • Descargar la aplicación BFG Repo-Cleaner. Como es una aplicación Java, necesitaremos instalarnos la máquina virtual. En mi caso, tengo Ubuntu y no la tenía todavía así que instalé openjdk-8-jre.
  • Siguiendo los pasos indicados en la web de la aplicación. Primeros clonamos el repositorio con la opción — mirror.
git clone --mirror git://example.com/some-big-repo.git

Posteriormente realizamos la operación que queramos. En mi caso eliminar todos los archivos mayores de 20 MB.

java -jar bfg.jar --strip-blobs-bigger-than 20M some-big-repo.git

Ahora, entramos en el repositorio y…

$ cd some-big-repo.git
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive

…comprobamos el tamaño del nuevo repositorio.

$ du -sh
7,6M .

Que no está mal. Antes pesaba cientos de megas.

  • Lo siguiente que se especifica en la documentación de la herramiennta es hacer un:
$ git push

A mi esto no me terminó de funcionar aunque el mensaje de salida era un Everything update, al volver a descargarme el repo seguía ocupando los cientos de megas así que supongo que tendría que haber hecho un git push -f…o no.

  • Lo que yo hice fue crearme un nuevo repo, añadirlo al repositorio modificado por BFG, hacer un push y comenzar desde ahí.
$ git remote add flat git://example.com/flat.git
$ git push flat master

Chimpún.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response