Índice
Trabajando en un repositorio git, cometí el error de hacer un commit de un fichero demasiado grande (~240mb). Github tiene un tamaño máximo de 100mb, por lo que no me dejaba subir los cambios a Github. Tras borrar el fichero, seguía con el problema, ya que el fichero seguía en el historial del repositorio. Tras buscar un rato, encontré la solución, veamos:
1. Eliminar el fichero del historial de git
Para ello basta ejecutar el siguiente comando:
$ git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file/dir>' HEAD
Y reemplazar <file/dir>
con la ruta de nuestro fichero.
2. Eliminar por completo el rastro del fichero
El comando anterior crea una copia de seguridad en caso de que hayamos cometido un error, si ejecutamos
$ git lola --name-status
Veremos un commit parecido a este (* SHA1 (refs/original/refs/heads/master) mensaje del commit
)
En este commit aún está el fichero problemático, para borrarlo definitivamente:
$ git update-ref -d refs/original/refs/heads/master
$ git reflog expire --expire=now --all
$ git gc --prune=now
3. Enviar los cambios
Una vez hecho esto, solo resta enviar los cambios a Github:
$ git push origin master
Y habremos solucionado el problema.
Fuentes
- How to remove/delete a large file from commit history in Git repository?
- Can’t push to GitHub because of large file which I already deleted
¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo o comentando abajo.