Cómo eliminar archivos del repositorio sin borrarlos del disco

Cómo eliminar archivos del repositorio sin borrarlos del disco

•

Hay una situación muy común al trabajar con Git: quieres que un archivo deje de formar parte del repositorio, pero no quieres borrarlo de tu ordenador. Esto pasa, por ejemplo, con archivos de configuración local, credenciales, ficheros generados automáticamente o documentos que ya no deberían versionarse.

La buena noticia es que Git permite hacer justo eso. No necesitas eliminar el archivo del disco duro para quitarlo del control de versiones. En este artículo verás cómo hacerlo de forma segura, cuándo usar cada comando y qué ocurre exactamente en el índice del repositorio.

Qué significa “eliminar un archivo del repositorio”

Cuando hablamos de eliminar un archivo del repositorio, en realidad nos referimos a sacarlo del área de staging y del historial futuro del proyecto, no necesariamente a borrarlo del sistema de archivos. Es decir, el archivo puede seguir existiendo en tu máquina, pero Git dejará de rastrearlo en adelante.

Este matiz es importante porque Git trabaja con tres zonas clave: el directorio de trabajo, el staging area y el historial del repositorio. Si conoces esa diferencia, entenderás por qué algunos comandos eliminan el archivo de verdad y otros solo lo desindexan. Si necesitas repasar esta base, te puede venir bien el artículo sobre cómo añadir archivos al repositorio con git add, ya que explica el flujo inverso.

La forma correcta: git rm con la opción –cached

El comando más útil en este caso es git rm –cached. Con él le indicas a Git que deje de seguir un archivo, pero sin borrarlo físicamente del disco. Es una solución ideal cuando quieres que algo deje de versionarse, pero necesitas conservarlo localmente.

# Quita el archivo del índice de Git, pero lo conserva en tu disco
git rm --cached archivo.txt

# Si quieres aplicar el cambio a una carpeta completa
git rm -r --cached carpeta/

# Después revisa el estado
git status

Tras ejecutar el comando, Git marcará el archivo como eliminado del repositorio en el próximo commit. Si luego haces git commit, ese fichero dejará de seguirse desde ese punto en adelante, aunque seguirá estando en tu equipo.

Si quieres repasar cómo se registra ese cambio en el historial, puedes consultar el artículo sobre cómo crear un commit correctamente con git commit.

Diferencia entre borrar el archivo y dejar de rastrearlo

Es fácil confundir git rm con git rm –cached. Ambos parecen parecidos, pero no hacen lo mismo. El primero elimina el archivo del disco y del repositorio, mientras que el segundo solo lo saca de la indexación de Git.

git rm

Se usa cuando quieres borrar por completo un archivo del proyecto, tanto localmente como del control de versiones. Es útil para ficheros obsoletos, duplicados o definitivamente innecesarios.

git rm –cached

Se usa cuando el archivo debe seguir existiendo en tu máquina, pero ya no debe formar parte del repositorio. Esta opción es muy habitual en entornos de desarrollo con archivos locales sensibles o variables de entorno.

Si ya has añadido el archivo antes y quieres entender mejor qué está ocurriendo en la zona de preparación, recuerda que git status es el comando más útil para comprobar la situación antes de confirmar nada.

Casos de uso habituales

Archivos de configuración local

Muchos proyectos tienen archivos como .env, ficheros de configuración IDE o ajustes personalizados que no deberían compartirse con todo el equipo. En esos casos, normalmente conviene dejar de rastrearlos y añadirlos al archivo .gitignore.

Primero eliminas el archivo del índice con git rm --cached y después lo ignoras para que no vuelva a aparecer en futuros commits. Si quieres profundizar en este paso, te recomendamos leer cómo ignorar archivos con .gitignore.

Archivos generados automáticamente

Hay proyectos que crean carpetas de compilación, logs, cachés o assets temporales. Estos elementos suelen pertenecer al entorno local y no al repositorio. Si ya se añadieron por error, puedes desindexarlos y evitar que ensucien el historial.

Secretos y credenciales

Si un archivo con credenciales llegó a Git, quitarlo del repositorio no basta por sí solo para resolver el problema de seguridad. Debes además revisar el historial, rotar claves y, si es necesario, reescribir referencias sensibles. Para este tipo de escenarios, conviene conocer herramientas como git revert o incluso técnicas más avanzadas como las explicadas en cómo borrar un commit del historial de Git, siempre con mucho cuidado.

Paso a paso para quitar un archivo del repositorio sin borrarlo

El proceso es sencillo, pero conviene hacerlo con orden para no perder información ni mezclar cambios innecesarios.

# 1. Quita el archivo del seguimiento de Git
git rm --cached archivo.txt

# 2. Verifica el cambio
git status

# 3. Añade el archivo a .gitignore si no quieres que vuelva a entrar
echo archivo.txt >> .gitignore

# 4. Registra la modificación
git add .gitignore
git commit -m "Deja de rastrear archivo local"

Si trabajas con una carpeta completa, puedes usar la opción recursiva. Es muy práctica cuando necesitas dejar fuera varios ficheros a la vez, por ejemplo en un directorio de builds o logs.

# Quitar del índice todo el contenido de una carpeta
git rm -r --cached carpeta-temporal/

# Registrar la limpieza del repositorio
git add .
git commit -m "Eliminar carpeta temporal del tracking"

Qué hacer si el archivo sigue apareciendo en cambios futuros

Una vez desindexado, Git debería dejar de seguir el archivo, pero a veces sigue apareciendo porque no se ha añadido a .gitignore. Si ese paso falta, el fichero volverá a mostrarse cuando cambie su contenido.

También puede ocurrir que el archivo siga formando parte del historial anterior. Eso es normal: quitarlo del seguimiento no borra automáticamente lo que ya se había confirmado en commits previos. Si necesitas auditar el historial, te puede servir revisar cómo ver el historial de cambios con git log.

Buenas prácticas antes de ejecutar el cambio

Antes de sacar un archivo del repositorio, conviene hacer una pequeña revisión. Comprueba si ese fichero está compartido por el equipo, si contiene datos sensibles o si depende de él algún proceso de integración continua.

Si el archivo forma parte de una rama activa o de una colaboración en equipo, avisa antes de cambiar su estado de seguimiento. En flujos colaborativos, un cambio aparentemente pequeño puede afectar a despliegues, scripts o entornos de desarrollo.

Y si el archivo fue modificado recientemente, asegúrate de no confundir esta operación con otras acciones como deshacer cambios, restaurar contenido o mover commits. Son herramientas distintas con efectos distintos. Para no mezclar conceptos, puedes repasar artículos como cómo recuperar archivos con git restore y cómo utilizar git reset correctamente.

Errores comunes al intentar hacerlo

Uno de los errores más frecuentes es usar git rm archivo.txt pensando que solo lo quitará del repositorio. En realidad, ese comando borra el archivo también del disco. Si tu intención era conservarlo localmente, necesitas --cached.

Otro error habitual es olvidar actualizar .gitignore. Sin esa exclusión, el archivo puede reaparecer en cuanto se modifique. También es común no revisar el estado del repositorio antes de confirmar, algo que puede evitarse fácilmente con git status.

Conclusión

Eliminar archivos del repositorio sin borrarlos del disco es una de esas tareas que parecen complicadas hasta que entiendes el comportamiento del índice de Git. La clave está en usar git rm –cached para desindexar, añadir el patrón correspondiente a .gitignore y confirmar el cambio con un commit limpio.

Esta técnica te ayuda a mantener repositorios más ordenados, evitar la publicación de archivos sensibles y separar mejor lo que pertenece al proyecto de lo que solo necesitas en tu máquina. Si dominas este flujo, gestionarás mucho mejor la limpieza y el control de versiones en proyectos reales.

Fuentes y lecturas recomendadas

Documentación oficial de git rm

Documentación oficial de .gitignore

Guías oficiales de GitHub sobre Git y repositorios

Xose de la Paz

Más de 20 años transformando pasión en profesión. Experto en desarrollo Full Stack con una visión integral que abarca desde la gestión de servidores y redes hasta el diseño de interfaz. Soy un "todoterreno" tecnológico que cree en el aprendizaje continuo y la visión global de los proyectos. Entre despliegue y despliegue, me pierdo por el mundo con mi cámara al hombro.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.