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:

Índice

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