
¿Cómo funciona gitignore?
Capítulo 10: Ignorar archivos y carpetas en los proyectos de Git
Empezamos el último capítulo de la parte de Git en este curso intensivo. Hay muchos temas de Git por tratar, pero no será en este curso. Más adelante haré un curso con la parte de Git avanzada. Con lo que has aprendido aquí, ya tienes suficiente para empezar a manejarte con Git.
A partir del siguiente capítulo, empezamos la parte de GitHub.
De todas formas, si quieres conocer algo específico de Git que no se ha dado en este curso, puedes dejármelo en los comentarios y lo tendré en cuenta para incluirlo en el siguiente curso que haga de Git.
¿Cómo ignorar archivos y carpetas en Git?
En ocasiones, tendremos cosas que todavía no queramos incluir en el proyecto, pero que están en la carpeta del mismo. En ese caso, Git nos estará diciendo que tenemos archivos sin añadir al proyecto ("Untracked").
Git gestiona los archivos de tres maneras:
- Sin seguimiento (untracked): no está añadido al repositorio.
- Con seguimiento (tracked): está añadido al repositorio.
- Ignorado (ignored): se ha indicado que lo ignore.
El archivo .gitignore para ignorar archivos
El archivo .gitignore es el que nos va a permitir escribir las normas de exclusión.
Podemos excluir tanto archivos sueltos como carpetas.
Nos debe quedar la siguiente estructura:
proyecto_3/
|-- texto1.txt
|-- texto2.txt
|-- .git/
Los dos archivos de texto están sin seguimiento. Son nuevos.
El estado del repositorio es este:
git status

Supongamos que texto2.txt es un archivo que no queremos añadir al repositorio. Podría tratarse de algo que no queremos tener en seguimiento, pero que queremos mantener en la carpeta del repositorio. Solo tenemos que crear el archivo .gitignore y añadirle las reglas que queramos.
¿Cómo crear el archivo .gitignore?
Podemos crear este archivo de texto plano desde la interfaz gráfica, dándole exactamente el nombre .gitignore o podemos hacerlo desde Git bash de la forma que te enseñé hace unos cuantos capítulos.
nano .gitignore
Al abrirse nano, escribe los nombres de los archivos que quieras excluir y guarda los cambios.

Este archivo (.gitignore) lo puedes editar hasta con un bloc de notas o cualquier editor de texto.
Pongamos nuevamente un git status
para ver que ocurre.
git status
Esta vez, me aparece .gitignore (hay que hacerle seguimiento como cualquier otro archivo) y el archivo texto1.txt. Sin embargo, texto2.txt ya ha sido ignorado. Para deshacer esto, solo tienes que borrar la línea con el nombre del archivo en el .gitignore.

El uso de expresiones regulares en .gitignore
Podemos utilizar las expresiones regulares en el archivo .gitignore. No vamos a ver todas las reglas posibles, ya que hay un montón. Sin embargo, te dejo las más básicas:
Ignorar todos los archivos con una extensión determinada
Con la utilización del asterisco *
sustituido como nombre, podemos ignorar todos los archivos de una misma extensión:
*.txt
Esto provoca que todos los archivos con extensión .txt sean ignorados.

Excluir carpetas enteras en gitignore
Para excluir una carpeta entera, lo puedes hacer añadiendo el nombre de la carpeta o ruta y una barra al final /
.
Crea una carpeta para comprobarlo y borra cualquier norma que hayas escrito en el .gitignore para no liarte. Además, Git ignora las carpetas vacías, por lo que puedes copiar dentro de ella los archivos de texto. Quedará así:
proyecto_3/
|-- carpeta1/
|-- |-- texto1.txt
|-- |-- texto2.txt
|-- texto1.txt
|-- texto2.txt
|-- .gitignore
|-- .git/
Miremos de nuevo el estado:
git status

Editamos el archivo .gitignore así:
carpeta1/
Esto provoca que la carpeta con todos sus archivos sean ignorados.
Dejamos la parte del curso de Git aquí, en el siguiente capítulo empezamos con GitHub. De aquí un tiempo empezaré a preparar un curso que continúe este con temas más avanzados de Git. Mientras tanto, puedes ir dejándome sugerencias de posibles temas que te gustaría que incluyera en el curso.
Comentarios
Si te quedan dudas sobre el temario, sobre html, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.