Gitignore

El gitignore es un archivo en el que se declaran rutas a ignorar para que nunca se metan cuando se hace un git add, entre otras cosas. Tienes una lista de ejemplos de gitignore en https://github.com/github/gitignore.

En Git, es fundamental evitar subir archivos sensibles, temporales o compilados que no deberían formar parte del repositorio. Para ello, contamos con una herramienta muy útil llamada .gitignore, que nos permite indicarle a Git qué archivos o carpetas debe ignorar para que no los incluya en los commits.

Imaginemos que tenemos un archivo llamado secretos.txt que contiene contraseñas o claves de bases de datos. Si hacemos un git add . para añadir todos los archivos, este archivo se incluirá, lo cual no es deseable. Aunque podemos revertir esta acción con git rm --cached secretos.txt, hacerlo cada vez es tedioso y propenso a errores. Aquí es donde entra en juego el archivo .gitignore.

Para crear un .gitignore, simplemente generamos un archivo con ese nombre, asegurándonos de que tenga el punto inicial. En sistemas Linux o macOS es sencillo, pero en Windows puede ser complicado crear un archivo que empiece con punto desde el explorador. Sin embargo, editores como Visual Studio Code o Sublime Text permiten crear este archivo sin problemas.

Dentro del .gitignore, escribimos en cada línea la ruta o patrón de los archivos que queremos ignorar. Por ejemplo, si añadimos la línea:

secretos.txt

Git ignorará cualquier archivo llamado secretos.txt en cualquier carpeta del proyecto. Si queremos ser más específicos y solo ignorar el archivo en la raíz del repositorio, podemos usar una barra al inicio:

/secretos.txt

Esto hará que solo se ignore el archivo secretos.txt que esté en la raíz, permitiendo que otros archivos con ese nombre en subcarpetas sí se puedan añadir.

Un caso muy común es el de los archivos compilados o temporales que generan ciertos lenguajes o herramientas. Por ejemplo, en Python, al ejecutar un programa, se crean carpetas llamadas __pycache__ con archivos .pyc que contienen código compilado para acelerar la ejecución. Estos archivos son específicos de la máquina donde se generan y no deberían subirse al repositorio, ya que pueden no funcionar en otros sistemas.

Para evitar que estos archivos se añadan, podemos incluir en el .gitignore líneas como:

__pycache__/
*.pyc

El asterisco es un comodín que indica cualquier nombre, por lo que *.pyc ignora todos los archivos que terminen con .pyc. De esta forma, Git no nos mostrará estos archivos al hacer git status y no correremos el riesgo de subirlos accidentalmente.

Lo mismo ocurre con otras carpetas o archivos generados automáticamente, como node_modules en proyectos de JavaScript o Node.js, archivos .exe generados en compilaciones de Visual Studio, o archivos temporales con extensiones como .bak o carpetas como tmp.

El uso de comodines en .gitignore es muy flexible. Por ejemplo, para ignorar todos los archivos que terminen en .log, podemos poner:

*.log

Y para ignorar una carpeta específica en cualquier lugar del proyecto, simplemente escribimos su nombre con una barra al final:

tmp/

Si queremos profundizar en qué archivos conviene ignorar según el tipo de proyecto, existe un repositorio muy útil en GitHub llamado github/gitignore, donde encontraremos plantillas específicas para distintos lenguajes y entornos, como Java, Python, Visual Studio, entre otros. Por ejemplo, en proyectos Java es común ignorar archivos .class, .jar, .war o .log.

En definitiva, mantener un .gitignore bien configurado nos ayuda a proteger información sensible, evitar subir archivos innecesarios que aumentan el tamaño del repositorio y mantener nuestro proyecto limpio y eficiente. Cada proyecto puede tener sus propias necesidades, por lo que es recomendable adaptar el .gitignore a lo que realmente queremos ignorar en nuestro caso particular.

Lista de reproducción
  1. 1
    ¿Qué es Git?
    4 minutos
  2. 2
    Cómo instalar Git
    9 minutos
  3. 3
    Creando tu primer commit
    9 minutos
  4. 4
    Qué es el staging area
    10 minutos
  5. 5
    Cómo deshacer modificaciones de archivos
    7 minutos
  6. 6
    Cómo deshacer un commit con reset
    7 minutos
  7. 7
    Cómo revertir un commit con revert
    7 minutos
  8. 8
    Introducción a las ramas
    6 minutos
  9. 9
    Cómo crear y modificar ramas
    6 minutos
  10. 10
    Commits bajo el workflow Feature Branch
    6 minutos
  11. 11
    Cómo fusionar ramas con merge
    6 minutos
  12. 12
    Fusiones conflictivas
    9 minutos
  13. 13
    Cómo construir alias
    7 minutos
  14. 14
    Más sobre conflictos
    9 minutos
  15. 15
    Etiquetas
    7 minutos
  16. 16
    Tags anotados
    9 minutos
  17. 17
    git stash: esconder cambios
    6 minutos
  18. 18
    Introducción a remotos
    5 minutos
  19. 19
    Pusheando a un remoto
    6 minutos
  20. 20
    Clonando y haciendo pull
    6 minutos
  21. 21
    Fetch y pull rebases
    8 minutos
  22. 22
    Rebase
    7 minutos
  23. 23
    Rebase interactivo
    6 minutos
  24. 24
    Master, main y otros nombres de rama
    9 minutos
  25. 25
    git switch
    9 minutos
  26. 26
    git-restore
    10 minutos
  27. 27
    git-grep
    11 minutos
  28. 28
    Gitignore
    11 minutos
  29. 29
    El flag --patch
    9 minutos
  30. 30
    git-apply y parches en bruto (advanced)
    9 minutos
  31. 31
    Merge octopus (advanced)
    9 minutos
  32. 32
    Conventional commits
    12 minutos
  33. 33
    Merge and squash (GitLab / GitHub...)
    6 minutos
  34. 34
    git merge --squash
    7 minutos
  35. 35
    git-bisect
    8 minutos
  36. 36
    git-blame
    6 minutos
  37. 37
    git-reflog
    10 minutos
  38. 38
    Git para la Bash
    11 minutos
  39. 39
    Submódulos (parte 1)
    7 minutos
  40. 40
    Submódulos (parte 2)
    10 minutos
  41. 41
    Otros clientes Git (último episodio)
    9 minutos