Saltar al contenido

.gitignore

Descripción

En la copia de trabajo, los archivos son visibles para Git como uno de los siguientes: rastreados, no rastreados e ignorados.

Los archivos ignorados son aquellos que Git ha sido configurado para ignorar. Suelen incluir artefactos de compilación, registros, metadatos del sistema operativo y configuraciones del IDE. Si quieres que estos archivos se confirmen, primero deben derivarse del código fuente del repositorio. A continuación se presentan algunos ejemplos de archivos ignorados por Git:

  • Archivos que se generan en tiempo de ejecución (por ejemplo .log, .lock),
  • Archivos ocultos del sistema (.DS_Store, Thumbs.db),
  • Código compilado (.o, .class), etc.

.gitignore

Patrones de ignorado de Git

Los archivos de ignorado de Git se encuentran en un archivo llamado .gitignore. Se editan y se confirman manualmente, ya que no existe un comando git ignore. Los archivos de ignorado de Git contienen patrones que se comparan con los nombres de archivo, con la ayuda de los cuales decides ignorar o no cada archivo. Estos patrones se crean con la ayuda de varios símbolos:

PatternExplanation
**/logsSe usan asteriscos dobles para coincidir con directorios en cualquier parte del repositorio
**/logs/debug.logSe usan asteriscos dobles para coincidir con archivos según su nombre y el nombre de su directorio padre.
*.logUn asterisco coincide con cero o más caracteres.
*.log !important.logEl signo de exclamación niega el patrón. Un archivo no se ignorará si coincide con un patrón de negación definido más adelante.
*.log !important/*.log trace.*Un patrón posterior puede volver a ignorar un archivo que antes había dejado de ignorarse, siempre que coincida con el mismo archivo.
/debug.logLa barra solo coincide con archivos en la raíz del repositorio.
debug.logDe forma predeterminada, los patrones coinciden con archivos en cualquier directorio.
debug?.logEl signo de interrogación coincide con un solo carácter.
debug[0-9].logLos corchetes se usan para coincidir con un solo carácter de un rango determinado.
debug[01].logLos corchetes coinciden con un solo carácter del conjunto determinado.
debug[!01].logEl signo de exclamación se usa para coincidir con cualquier carácter excepto uno del conjunto determinado.
debug[a-z].logLos rangos pueden ser numéricos o alfabéticos.
logsEl patrón coincidirá tanto con los archivos como con el contenido de los directorios con ese nombre si no se usa con una barra.
logs/Usar una barra indica que el patrón es un directorio. Git ignorará todo el contenido de cualquier directorio con ese nombre, incluidos sus archivos y subdirectorios, en el repositorio.
logs/**/debug.logUn asterisco doble coincide con cero o más directorios.
logs/*day/debug.logLos asteriscos también se pueden usar en nombres de directorio.

Aquí hay un ejemplo con uno de estos patrones:

Patrones de .gitignore

bash
debug0.log
debug1.log
#but not
debug10.log

Archivos .gitignore compartidos en el repositorio

Puedes definir varios archivos .gitignore en distintos directorios del repositorio. Cada uno de los patrones se prueba en relación con el directorio que contiene ese archivo. Sin embargo, la forma más sencilla es definir un único archivo .gitignore en la raíz del repositorio.

Como tu archivo .gitignore se registra en el repositorio, queda versionado como otros archivos y se comparte con tu equipo cuando haces push. Solo debes incluir patrones en .gitignore para beneficiar a otros usuarios del repositorio.

Reglas personales para ignorar en Git

Los patrones de ignorado personales también se pueden definir para un repositorio concreto en un archivo especial en .git/info/exclude. Es un lugar apropiado para incluir patrones que solo te benefician a ti, ya que no se versionan ni se distribuyen con tu repositorio.

Reglas globales de ignorado de Git

Puedes definir la propiedad core.excludesFile de Git para especificar además patrones globales de ignorado de Git para todos los repositorios de tu sistema local. Este archivo lo crearás tú mismo. Puedes colocar tu archivo global .gitignore en tu directorio personal para encontrarlo fácilmente. Una vez creado el archivo, configura su ubicación con el comando git config, así:

reglas globales de gitignore

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

Ignorar un archivo confirmado previamente

Para ignorar un archivo que se confirmó previamente, debe eliminarse del repositorio. Luego debes añadir una regla .gitignore para él. Con la ayuda de la opción --cached de git rm, el archivo se eliminará del repositorio pero permanecerá en el directorio de trabajo como un archivo ignorado. Sin embargo, si quieres que también se elimine del directorio de trabajo, simplemente omite la opción --cached.

archivos confirmados en .gitignore

bash
echo debug.log >> .gitignore
git rm --cached debug.log
#rm 'debug.log'
git commit -m "Start ignoring debug.log"

Confirmar un archivo ignorado

El archivo ignorado se puede confirmar en el repositorio con la combinación de la opción -f (o --force) junto con git add. Sin embargo, elige este método en caso de que tengas un patrón general, como *.log, pero quieras confirmar un archivo específico:

confirmando archivos ignorados

bash
cat .gitignore
# *.log
git add -f debug.log
git commit -m "Force adding debug.log"

Si no, la forma más sencilla es establecer una excepción a la regla general:

confirmar archivos ignorados

bash
echo '!debug.log' >> .gitignore

cat .gitignore
#*.log
#!debug.log

git add debug.log
git commit -m "Adding debug.log"

Guardar temporalmente un archivo ignorado

El comando git stash toma tanto los cambios preparados como los no preparados que no se han confirmado, los guarda para usarlos más adelante y luego los devuelve a tu copia de trabajo. De forma predeterminada, ignora los archivos ignorados y solo guarda temporalmente los cambios rastreados por Git. Pero la opción --all hará que este comando guarde también los cambios de los archivos ignorados y no rastreados.

Depuración de archivos .gitignore

En caso de patrones .gitignore complicados, o de varios archivos .gitignore, puede ser difícil averiguar por qué un archivo concreto está siendo ignorado. El comando git check-ignore con la opción -v (o --verbose) determina qué patrón está causando que un archivo concreto se ignore:

git check ignored files

bash
git check-ignore -v debug.log
#.gitignore:3:*.log debug.log

Aquí está la salida:

git check-ignore

bash
<file containing the pattern> : <line number of the pattern> : <pattern> <file name>

Practice

Which statements accurately describe the functionalities and rules of `.gitignore` files in Git?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.