Eliminar archivo(s) en git y todo su historial

Necesitas eliminar algún archivo en github, gitlab y cualquier medio en donde usas git, esto es para ti.
¿Se te olvido poner en el .gitignore un config.php, o algún archivo donde pusiste llaves, contraseñas y/o cualquier información sensible, ahora podrás eliminar todo rastro con la siguiente guía rápida.

Para este ejemplo, usaremos “config.php” en la raíz de nuestro repositorio git. En los comandos, pondré en negritas config.php, pero podrás adaptarlo a lo que tu necesites.

La clave de todo esto es usar filter-branch y a continuación te pongo los pasos a seguir (recuerda cambiar config.php por lo que necesites).

Nos metemos con la terminal en el directorio en donde estamos trabajando (clone).

$ cd midirectorio/

$ git filter-branch –force –index-filter ‘git rm –cached –ignore-unmatch config.php‘ –prune-empty –tag-name-filter cat — –all

Esto forzara a git a procesar la petición en todo el historial, en todas las ramas y en todos los tags, pero no hacer checkout.
Quitar el archivo especificado incluyendo commits (en el ejemplo es config.php)
Sobre escribir etiquetas si fuera necesario.

$ echo config.php >> .gitignore

$ git add .gitignore

$ git commit -m “Agregar config.php al .gitignore”

Aquí, metemos config.php en el .gitignore, para estar seguros que no vuelva a guardarse. Después hacemos el add y al final el commit.

Revisamos y si todo está en orden ejecutamos (para mantener todo limpio):

$ git push origin –force –all

$ git for-each-ref –format=’delete %(refname)’ refs/original | git update-ref –stdin

$ git reflog expire –expire=now –all

$ git gc –prune=now

Suscribete ahora

Suscríbete y recibe información valiosa sobre UI, UX, CX y otras soluciones informáticas