Introducción
A menudo, cuando trabaja en un proyecto que usa Git, debe excluir archivos o directorios específicos para que no se envíen al repositorio remoto.
El .gitignore
se usa para especificar qué archivos sin seguimiento deben ser ignorados por Git.
Archivo.Gitignore
Los archivos ignorados suelen ser archivos específicos de la plataforma o archivos creados automáticamente por los sistemas de compilación. Algunos ejemplos comunes incluyen:
- Archivos en tiempo de ejecución como registros, bloqueos, caché o archivos temporales.
- Archivos con información confidencial, como contraseñas o claves API.
- Código compilado, como
.class
o.o
. - Directorio de dependencias, como
/vendor
o/node_modules
. - Cree directorios, como
/public
,/out
o/dist
. - Los archivos del sistema, tales como
.DS_Store
oThumbs.db
- Archivo de configuración IDE o editor de texto.
Un .gitignore
es un archivo de texto sin formato donde cada línea contiene un patrón para ignorar el archivo o directorio.
.gitignore
utiliza esquemas globales para hacer coincidir nombres de archivo y caracteres comodín. Si tiene archivos o directorios que contienen un patrón comodín, puede usar una sola barra invertida ( \
) como carácter de escape.
Comentarios
Las líneas que comienzan con un signo de almohadilla ( #
) son comentarios y se ignoran. Las líneas en blanco se pueden usar para mejorar la legibilidad del archivo y agrupar sus líneas de patrón.
barra oblicua
El símbolo de barra inclinada ( /
) representa un separador de directorio. La barra inclinada al principio de un patrón es relativa al directorio donde reside .gitignore
Si el patrón comienza con una barra inclinada, coincide con archivos y directorios solo en la raíz del repositorio.
Si el patrón no comienza con una barra inclinada, coincide con los archivos y directorios de cualquier directorio o subdirectorio.
Si el patrón termina con una barra inclinada, solo coincide con directorios. Cuando se ignora un directorio, todos sus archivos y subdirectorios también se ignoran.
Nombres de archivo literales
El patrón más simple es un nombre de archivo literal sin caracteres especiales.
Patrón | Coincidencias de ejemplo |
---|---|
/access.log | access.log |
access.log | access.log
logs/access.log
var/logs/access.log |
build/ | build |
Símbolos comodín
*
- El símbolo de asterisco coincide con cero o más caracteres.
Patrón | Coincidencias de ejemplo |
---|---|
*.log | error.log
logs/debug.log
build/logs/error.log |
**
- Dos símbolos de asterisco adyacentes coinciden con cualquier archivo o con cero o más directorios. Cuando está seguida de una barra inclinada ( /
), solo coincide con directorios.
Patrón | Coincidencias de ejemplo |
---|---|
logs/** | Coincide con cualquier cosa dentro del directorio de logs |
**/build | var/build
pub/build
build |
foo/**/bar | foo/bar
foo/a/bar
foo/a/b/c/bar |
?
- El signo de interrogación coincide con cualquier carácter.
Patrón | Coincidencias de ejemplo |
---|---|
access?.log | access0.log
access1.log
accessA.log |
foo?? | fooab
foo23
foo0s |
Corchetes
[...]
- Coincide con cualquiera de los caracteres encerrados entre corchetes. Cuando dos caracteres están separados por un guión -
indica un rango de caracteres. El rango incluye todos los caracteres que se encuentran entre esos dos caracteres. Los intervalos pueden ser alfabéticos o numéricos.
Si el primer carácter que sigue a [
es un signo de exclamación ( !
), El patrón coincide con cualquier carácter excepto con los del conjunto especificado.
Patrón | Coincidencias de ejemplo |
---|---|
*.[oa] | file.o
file.a |
*.[!oa] | file.s
file.1
file.0 |
access.[0-2].log | access.0.log
access.1.log
access.2.log |
file.[ac].out | file.a.out
file.b.out
file.c.out |
file.[a-cx-z].out | file.a.out
file.b.out
file.c.out
file.x.out
file.y.out
file.z.out |
access.[!0-2].log | access.3.log
access.4.log
access.Q.log |
Patrones negativos
Un patrón que comienza con un signo de exclamación ( !
) Cancela (vuelve a incluir) cualquier archivo que haya sido ignorado por el patrón anterior. La excepción a esta regla es volver a incluir un archivo si se excluye su directorio principal.
Patrón | Coincidencias de ejemplo |
---|---|
*.log
!error.log | error.log o logs/error.log no se ignorarán |
Ejemplo
A continuación se muestra un ejemplo de cómo se .gitignore
:
# Ignore the node_modules directory
node_modules/# Ignore Logs
logs
*.log
# Ignore the build directory
/dist
# The file containing environment variables.env
# Ignore IDE specific files.idea/.vscode/*.sw*
Archivo.gitignore local
Un .gitignore
local generalmente se coloca en la raíz del repositorio. Sin embargo, puede crear varios .gitignore
en diferentes subdirectorios de su repositorio. Los patrones en los .gitignore
se comparan con el directorio donde reside el archivo.
Los patrones definidos en archivos que residen en directorios de nivel inferior (subdirectorios) tienen prioridad sobre los de directorios de nivel superior.
Los .gitignore
locales se comparten con otros desarrolladores y deben contener patrones que sean útiles para todos los demás usuarios del repositorio.
Reglas personales
Los patrones específicos de su repositorio local y que no deben distribuirse a otros repositorios deben establecerse en el .git/info/exclude
.
Por ejemplo, puede utilizar este archivo para ignorar los archivos generados por las herramientas de su proyecto personal.
Archivo.gitignore global
Git también te permite crear un .gitignore
global, donde puedes definir reglas de ignorar para cada repositorio de Git en tu sistema local.
El archivo puede tener el nombre que desee y almacenarse en cualquier ubicación. El lugar más común para guardar este archivo es el directorio de inicio. Que necesita para crear manualmente el archivo y configurar Git para usarlo.
Por ejemplo, para establecer ~/.gitignore_global
como un archivo Git global para ignorar, haría lo siguiente:
Crea el archivo:
touch ~/.gitignore_global
Agregue el archivo a la configuración de Git:
git config --global core.excludesfile ~/.gitignore_global
Abra el archivo con su editor de texto y agregue sus reglas.
Las reglas globales son especialmente útiles para ignorar ciertos archivos que nunca desea confirmar, como archivos con información confidencial o archivos ejecutables compilados.
Ignorar un archivo comprometido
Los archivos de la copia de trabajo se pueden rastrear o no.
Para ignorar un archivo que se confirmó previamente, debe continuar con el comando unstage y eliminar el archivo del índice, luego agregar una regla para el archivo en .gitignore
:
git rm --cached filename
La --cached
permite no eliminar el archivo del árbol de trabajo, sino solo eliminarlo del índice.
Para eliminar un directorio de forma recursiva, utilice la opción -r
git rm --cached filename
Si desea eliminar el archivo tanto del índice como del sistema de archivos local, omita la opción --cached
Al eliminar archivos de forma recursiva, use la -n
que hará un "ciclo de prueba" y mostrará qué archivos se eliminarán:
git rm -r -n directory
Depurar archivo.gitignore
A veces puede resultar difícil determinar el patrón por el que se ignora un archivo específico, especialmente cuando se utilizan varios .gitignore
o esquemas complejos. En este caso, el git check-ignore
con la -v
es útil y le permite ver los detalles sobre el patrón de coincidencia.
Por ejemplo, para verificar el patrón para el que se www/yarn.lock
, debe ejecutar:
git check-ignore -v www/yarn.lock
La salida muestra la ruta al gitignore
, el número de línea correspondiente y el patrón real.
www/.gitignore:31:/yarn.lock www/yarn.lock
El comando también acepta más de un nombre de archivo como argumentos y el archivo no debe existir en su árbol de trabajo.
Ver todos los archivos omitidos
El comando de status
--ignored
muestra una lista de todos los archivos ignorados:
git status --ignored
Conclusión
El .gitignore
permite excluir archivos para que no se registren en el repositorio. El archivo que contiene patrones globales que describen qué archivos y directorios deben ignorarse.
gitignore.io es un servicio en línea que le permite generar .gitignore
para su sistema operativo, lenguaje de programación o IDE.