.gitignore : los archivos ignored en Git


Lección 21 / 53

.gitignore : los archivos ignored en Git

Git Guía Git Guía Git español

Anteriormente hemos visto que Git considera los archivos presentes en la working copy distinguiéndolos en tracked (archivos que se han enviado al repository o incluidos en el staging area) y untracked  (lo opuesto al anterior).

A estos dos grupos podemos añadir un tercero, los archivos ignored, es decir, los archivos para los que Git ha sido expresamente instruido para excluirlos del control de versiones.

Los archivos ignored generalmente son artefactos de build u otros archivos generados que se pueden recrear a partir de las fuentes del repository, o archivos que contienen contenido que no debe incluirse en los commit por otros motivos (por ejemplo, contraseñas, claves de autenticación u otros secretos).

Para indicar qué archivos ignorar, se utiliza el archivo especial .gitignore, generalmente presente en el directory inicial del proyecto. Sin embargo, es posible guardar un archivo .gitignore en cada subdirectory, que complementa o reemplaza las reglas del archivo "principal" en ese directorio y sus "secundarios".

No hay un comando Git específico, por lo que deberá editar el contenido de ese archivo con un editor de texto. Por supuesto, es necesario agregar y enviar el archivo .gitignore en el repository para que sea una parte integral de él.

El contenido exacto del archivo .gitignore depende de la naturaleza del proyecto. Hay colecciones de plantillas con archivos específicos basados ​​en el lenguaje de programación y el framework utilizado. Por ejemplo, una plantilla para un proyecto en lenguaje PHP con el marco Laravel es:

/vendor/
node_modules/
npm-debug.log
yarn-error.log

# Laravel 4 specific
bootstrap/compiled.php
app/storage/

# Laravel 5 & Lumen specific
public/storage
public/hot

# Laravel 5 & Lumen specific with changed public path
public_html/storage
public_html/hot

storage/*.key
.env
Homestead.yaml
Homestead.json
/.vagrant
.phpunit.result.cache

Las líneas que comienzan con # son comentarios.
En cuanto a los demás, en cada línea se indica un pattern para ignorar (o la ruta exacta a un archivo).

En base al pattern indicado, los archivos específicos en el directory se ignorarán, por ejemplo:

  • /logs - ignora el documento o directory logs en la directory actual (entonces /logs pero no /example/logs
  • logs - ignora los documentos y las directory con nombre logs en la directory actual y en los subdirectorios (entonces /logs, /example/logs, /debug/logs/debug.log, pero no /build/log/today
  • logs/ - ignora solo los directory con nombre logs (entonces los directory /build/logs y todos los archivos contenidos pero no el archivo debug/logs)

Es posible también indicar que archivos no ignorar si otro pattern indicase lo contrario a través de un !. Por ejemplo:

# ignora todos los archivos con extesion .log
*.log
# NO ignorar los "debug.log"
!debug.log

Es una buena práctica crear un archivo .gitignore global que se aplica a todos los repository de Git en su máquina. Este archivo puede indicar pattern que deben ignorarse en cada proyecto, por ejemplo, archivos creados por el propio sistema operativo (como .DS_Store y thumbs.db) o directorios creados por su IDE/Editor.

touch ~/.gitignore
git config --global core.excludesFile ~/.gitignore

Con estos comandos, creamos un archivo .gitignore en nuestro directory home e indicamos a Git que lo use como un archivo global ignorado.

Es posible agregar un archivo que se agregó previamente al repository a los archivos ignorados, usando los siguientes comandos:

$ echo debug.log >> .gitignore
$ git rm --cached debug.log
rm 'debug.log'
$ git commit -m "rimosso debug.log dal repository"

Atención: en todos los commit anteriores el archivo seguirá disponible (Git mantiene la historia).

Guía Git en español 1 ¿Qué es Git? 2 Nacimiento de Git 3 Principales características de Git 4 Línea de comando UI en Git 5 Cómo instalar Git 6 5 comandos Git para desarrolladores individuales 7 5 comandos Git para desarrollar en colaboración 8 Repository en Git 9 Commit en Git 10 Working Copy en Git 11 Staging Area en Git 12 Branch en Git 13 Remote en Git 14 Inicializar un nuevo repository con git init 15 Crear una copia de un repository remoto en Git con git clone 16 Configurar las opciones de Git con git config 17 El comando Git add en Git 18 El comando Git commit en Git 19 El comando Git diff en Git 20 El comando Git stash en Git 21 .gitignore : los archivos ignored en Git 22 El comando Git status en Git 23 El comando Git log en Git 24 El comando Git tag en Git 25 El comando Git blame en Git 26 El comando Git checkout en Git 27 El comando Git revert en Git 28 El comando Git reset en Git 29 El comando Git rm en Git 30 La opción Git commit –amend en Git 31 Git rebase –interactive en Git 32 Atajos para comandos frecuentes en Git 33 Repository compartido en Git 34 El modelo Fork & pull 35 El comando Git remote en Git 36 Los principales repository remote de Git: Github, Gitlab y Bitbucket 37 El comando Git fetch en Git 38 El comando Git push en Git 39 El comando Git pull en Git 40 El comando Git branch en Git 41 El comando Git checkout en Git 42 El comando Git merge en Git 43 Resolver un merge conflict en Git 44 Entender mejor el contenido de los commit durante un conflicto de merge en Git 45 Workflow Git centralizado 46 Workflow Git feature branching 47 Workflow Git trunk-based 48 Enfoque “forking” en Git 49 Gitflow en Git 50 Mensajes de commit en Git 51 Tagging & Versioning en Git 52 La opción merge en Git 53 La opción rebase en Git

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad