miércoles, 4 de noviembre de 2015

Ignorar fichero del repositorio en Git


Cuando queremos ignorar un fichero o directorio en concreto, y este fichero no forma parte del repositorio, pero si en la carpeta de trabajo, por ejemplo, los ficheros *.obj , *.log o similar, que no queremos que formen parte, pero que son necesarios en el proyecto.

Pues tan simple como crear un fichero .gitignore, y añadirlos;
/obj/
*.log

Bien, pero , ¿ Y si el fichero en cuestión SI quiero que este en el repositorio ?  por ejemplo, un fichero inicial de configuración, pero NO quiero que se haga un seguimiento, por la sencilla razón,
que contiene los passwords o otros parámetros que no queremos que se actualice.

Pues para eso existe un comando;
git update-index 

Como la finalidad no es explicar TODO lo que hace el comando, vamos directamente a lo que nos interesa, aqui el enlace al comando, https://www.kernel.org/pub/software/scm/git/docs/git-update-index.html

Imaginemos que tenemos un fichero, config.ini, que contiene las diversas opciones.
git update-index --asume-unchanged config.ini

Atentos, git update-index solo maneja ficheros, no directorios.

Ahora, si modificas el fichero config.ini, verás que para Git, no lo has tocado, evitando así tener
que subirlo al repositorio. 

Ah, pero si ahora quiero que Git vuelva a tener encuenta a nuestro fichero, config.ini, pues 
tenemos el comando;
git update-index --no--asume-unchanged config.ini

Para saber que ficheros están como 'ocultos' , usamos el comando, la h en minúscula nos lo indica;
git ls-files -v  

H file.txt
h config.ini

Así, podemos crearnos unos alias, creando-comandos-en-git, para manejar más fácil

[alias]
hide = update-index --assume-unchanged
unhide = update-index --no--assume-unchanged

Aplicando el alias;
git hide config.ini



No hay comentarios:

Publicar un comentario

Android y Git. Disponer del hash automáticamente.

Una de las cosas a las que estoy acostumbrado, es tener siempre en mi código, el hash/tag/versión del control de versiones que estoy usan...