En este tutorial aprenderás a eliminar archivos de repositorios de Git. Esto es algo que querrás hacer cuando agregar una archivo sin querer al repositorio, como pueden ser archivos compilados o archivos con información privada.
Como es mejor prevenir que curar, cuando añadas un archivo y no quieres que éste se incluya en el repositorio, debes asegurarte de que el archivo se encuentre definido en el archivo .gitignore
de tu proyecto. Sin embargo, en ocasiones podrías olvidarte, hasta que ejecutas el comando git add .
y ves que el archivo se ha agregado al repositorio. Aquí verás cómo solucionarlo.
Contenidos
Elimina un archivo del repositorio
Para eliminar el archivo del repositorio sin eliminarlo de tu sistema, basta con ejecutar el comando git rm
con la opción --cached
y la ruta al archivo:
git rm --cached ruta/al/archivo.ext
El comando anterior eliminará el archivo del repositorio, manteniéndolo en el sistema. Debes asegurarte de que la opción --cached
esté presente, ya que de lo contrario, el archivo también se eliminará de tu sistema. Para comprobar que el archivo se ha eliminado, usa el comando git status
.
Para que los cambios surtan efectos en el repositorio remoto, debes hacer un commit
y luego un push
al repositorio remoto.
git commit -a -m "Archivo archivo.ext eliminado"
git push origin main
Para evitar que el archivo se agregue nuevamente al repositorio en el futuro, debes incluirlo en el archivo .gitignore
:
ruta/al/archivo.ext
Elimina un directorio del repositorio
Para eliminar el directorio del repositorio sin eliminarlo de tu sistema, también debes ejecutar el comando git rm
junto con la opción --cached
y la ruta del directorio:
git rm --cached ruta/al/directorio
Este comando mantendrá el directorio en tu sistema, eliminándolo únicamente del repositorio. Del mismo modo, no te olvides de usar la opción --cached
. Puedes usar el comando git status
para comprobar que el archivo se ha eliminado de tu repositorio, aunque permanezca en tu sistema.
Para que el directorio también se elimine del repositorio remoto, debes hacer un commit
y luego un push
al repositorio remoto:
git commit -a -m "Directorio directorio eliminado"
git push origin main
Para evitar que el directorio se vuelva a agregar al repositorio, agrégalo al archivo .gitignore
:
ruta/al/directorio
Elimina archivos o directorios del historial
Es importante destacar que si el archivo contiene información privada y ya se encuentra en el repositorio remoto, todavía podría ser accesible desde el historial de Git.
Para eliminar un archivo del historial puedes usar este comando:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch ruta/al/archivo.ext' HEAD
Para eliminar un directorio del historial puedes usar este comando:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch ruta/al/directorio' HEAD
Si el archivo se ha agregado recientemente, no será problemático, aunque si se trata de múltiples archivos y llevan mucho tiempo en repositorio, se generarán muchos commits, tal y como podemos ver aquí.
Esto ha sido todo.