Dejar de ver cambios en archivos rastreados en git

Trabajando con git en equipos de trabajo, a menudo nos vemos en la necesidad de realizar un cambio a un archivo que ya esta siendo visto por git, pero no queremos que ese cambio sea registrado, ya sea porque es un cambio de configuración local o por alguna otra razón en específico.

Para este caso podemos usar el comando de git  update-index que proporciona un control estricto sobre como se rastrea, registran o se ignoran los archivos en el staging o index. Vamos a ver algunos usos puntuales del comando.

Asume Unchanged

Dejar de ver cambios en local; Si a un archivo le agregas esta opción  git dejara de ver esos cambios que realices tu localmente...


    git update-index --assume-unchanged 

Dado que con git status no veremos estos archivos, podemos encontrarlos con git ls-file, para los archivos assume-unchanged...


    git ls-files -v | grep "^h"

Pero ojo... Deja de ver cambios en local, si al hacer un pull o un merge ese archivo trae un cambio, git sobre escribirá tus cambio dando prioridad siempre a que debes tener tu código al día con el remoto, para prevenir esto tenemos el siguiente comando...

Skip Worktree

Como mencionamos anteriormente,  aplica la misma funcionalidad que la opción anterior, pero dando prioridad a los cambios locales, para que no sean sobre escritos por un pull o por un merge ( siempre y cuando no haya conflictos).


    git update-index --skip-worktree 

Para ver los archivos que ignoramos con skip-worktree


    git ls-files -v | grep "^S"


Para el caso en que se quiera revertir lo anteriormente mencionado, aplicaríamos lo siguiente para cada caso...


    git update-index --no-assume-unchanged 
    git update-index --no-skip-worktree 

Nota: el comando git update-index tiene muchas otras aplicaciones, como por ejemplo cambiar permisos de archivos, agregar archivos al índex, manejar de manera mas optima repositorios muy grandes pero por el momento solo vimos dos casos puntuales para el comando.