.gitignore : los archivos ignored en Git
Lección 21 / 53
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).
Anterior
20 El comando Git stash..Siguiente
22 El comando Git statu..