Es muy usual tener un archivo llamado .gitignore donde se pueden colocar los nombres de archivos o carpetas que no queremos llevar registro.
Creemos unos archivos de prueba.
cd Mi_primer_repomkdir resultadostouch a.csv b.csv c.csv resultados/a.out resultados/b.out
Si preguntamos el estado veremos los cambios no registrados en el historial.
git status
Estos archivos por el momento no nos sirven de nada y guardarlos o registrarlos sería una perdida de tiempo/espacio. Para ignorarlos, creamos el archivo .gitignore y añadimos los nombres a ese archivo:
nano .gitignore
*.csvresultados/
cat .gitignore
Estos patrones le están diciendo a Git que ignore todos los archivos .csv y todo lo que hay en la carpeta resultados, si después añadimos algo a la carpeta lo seguirá ignorando. Y si alguno de esos archivos ya se le dijo a Git que llevará su registro lo seguirá registrando.
git status
Si nos fijamos, el único documento que ahora nos menciona Git es el archivo .gitignore. Lo que nos falta es añadirlo y hacer el commit.
git add .gitignoregit commit -m"Creamos el archivo gitignore e ignoramos todo lo que hay en resultados y archivos csv"git status
El archivo .gitignore nos ayuda a no cometer el error de accidentalmente tratar de registrar y rastrear algo que se le dijo que no lo hiciera.
git add a.csv
Si realmente queremos agregarlo, tendríamos que usar la opción -f:
git add -f a.csv
Para ver el estado de los archivos ignorados usamos la siguiente instrucción:
git status --ignored
NoteEjercicio 1
Supongamos que tenemos las siguientes subcarpetas:
resultados/plotsresultados/datos
¿Qué tenemos que hacer si queremos ignorar solamente lo que hay en datos y no lo que hay en plots?
TipSolución
Si queremos ignorar únicamente el contenido de la carpeta datos, pero seguir rastreando los archivos de plots, podemos crear (o modificar) un archivo .gitignore y agregar la siguiente línea:
resultados/datos/
La barra / al final indica que queremos ignorar todo el contenido del directorio datos.
El archivo .gitignore podría verse así:
resultados/datos/
Con esta configuración, Git ignorará archivos como
¿Cómo le indicamos a Git que ignore todos los archivos .csv sin indicar manualmente todos los directorios?
TipSolución
Si queremos ignorar todos los archivos con extensión .csv, independientemente del directorio en el que se encuentren, podemos añadir al archivo .gitignore la siguiente línea:
*.csv
Con esta regla, Git ignorará automáticamente archivos como
sin necesidad de especificar manualmente cada carpeta.
Podemos verificar qué archivos están siendo ignorados mediante:
git status
y observaremos que los archivos con extensión .csv no aparecerán.
Alternativamente, podríamos usar:
**/*.csv
que explícitamente indica que se ignoren todos los archivos .csv en cualquier subdirectorio, aunque en la mayoría de los casos basta con escribir simplemente:
*.csv
NoteEjercicio 5
Si en el archivo .gitignore escribimos lo siguiente, ¿qué está ignorando?
*.csv!*.csv
TipSolución
La primera línea
*.csv
le indica a Git que ignore todos los archivos con extensión .csv.
Sin embargo, la segunda línea
!*.csv
niega la regla anterior y vuelve a incluir todos los archivos .csv.
Por lo tanto, el efecto neto es que ningún archivo .csv será ignorado.
Recordemos que en un archivo .gitignore, las reglas se procesan de arriba hacia abajo y las reglas posteriores tienen prioridad sobre las anteriores.
Por ejemplo, si tenemos los archivos
a.csv
b.csv
datos/c.csv
ninguno de ellos será ignorado.
Podemos comprobarlo con:
git status
y observaremos que todos los archivos .csv aparecerán normalmente.