Casos de Uso Prácticos con .gitignore
Uno de los casos de uso más comunes para git rm --cached es cuando desea dejar de rastrear archivos que deberían ser ignorados. Exploremos esto con un ejemplo práctico.
Creación y Confirmación de Archivos
Primero, creemos una situación en la que hemos confirmado accidentalmente archivos que deberíamos haber ignorado:
- Asegúrese de que todavía está en el directorio
git-index-demo:
cd ~/project/git-index-demo
- Agreguemos nuestros archivos existentes al índice:
git add hello.txt another.txt
- Ahora, confirmemos estos archivos:
git commit -m "Initial commit"
Debería ver una salida que confirma la confirmación:
[master (root-commit) xxxxxxx] Initial commit
2 files changed, 2 insertions(+)
create mode 100644 another.txt
create mode 100644 hello.txt
- Cree un archivo de registro que simule un archivo generado que no queremos rastrear:
echo "Some log data" > application.log
- Agreguemos y confirmemos accidentalmente este archivo de registro:
git add application.log
git commit -m "Add log file by mistake"
Debería ver una salida que confirma la confirmación:
[master xxxxxxx] Add log file by mistake
1 file changed, 1 insertion(+)
create mode 100644 application.log
Usando .gitignore y git rm --cached
Ahora, corrijamos nuestro error creando un archivo .gitignore y usando git rm --cached:
- Cree un archivo
.gitignore para especificar que queremos ignorar todos los archivos .log:
echo "*.log" > .gitignore
- Verifique el estado:
git status
Debería ver:
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
Observe que, aunque tenemos el archivo .gitignore con el patrón *.log, el archivo application.log no aparece como modificado. Esto se debe a que .gitignore solo evita que los archivos no rastreados se agreguen al índice. Los archivos que ya están rastreados continuarán siendo rastreados.
- Agreguemos y confirmemos el archivo
.gitignore:
git add .gitignore
git commit -m "Add .gitignore file"
- Ahora, eliminemos el archivo de registro del índice de Git mientras lo mantenemos en nuestro sistema de archivos:
git rm --cached application.log
Debería ver:
rm 'application.log'
- Verifique el estado:
git status
Debería ver:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: application.log
Esto indica que la eliminación del archivo del sistema de rastreo de Git se incluirá en la próxima confirmación.
- Confirmemos este cambio:
git commit -m "Stop tracking application.log"
- Verifique el estado una vez más:
git status
Debería ver:
On branch master
nothing to commit, working tree clean
- Ahora, verifiquemos que el archivo todavía existe en nuestro sistema de archivos:
ls -l
Debería ver que application.log todavía existe, junto con nuestros otros archivos:
total 16
-rw-r--r-- 1 labex labex 13 [date] another.txt
-rw-r--r-- 1 labex labex 13 [date] application.log
-rw-r--r-- 1 labex labex 6 [date] .gitignore
-rw-r--r-- 1 labex labex 11 [date] hello.txt
- Intentemos modificar el archivo de registro para ver si Git rastrea los cambios:
echo "More log data" >> application.log
git status
Debería ver:
On branch master
nothing to commit, working tree clean
Aunque modificamos el archivo de registro, Git no detecta ningún cambio porque el archivo ahora se ignora debido al patrón .gitignore.
Este es un flujo de trabajo muy común cuando accidentalmente confirma archivos que deberían ser ignorados, como:
- Artefactos de compilación
- Archivos de registro
- Archivos de configuración con información sensible
- Directorios de dependencias (como
node_modules en proyectos de JavaScript)
Al usar git rm --cached junto con .gitignore, puede:
- Dejar de rastrear archivos que deberían ser ignorados
- Mantener los archivos en su sistema de archivos local
- Evitar que se agreguen al repositorio en el futuro