Global Git ignore

841

Quiero configurar Git para ignorar globalmente ciertos archivos.

He agregado un .gitignorearchivo a mi directorio de inicio ( /Users/me/) y le he agregado la siguiente línea:

*.tmproj

Pero no está ignorando este tipo de archivos, ¿alguna idea de lo que estoy haciendo mal?

Fuzz suave
fuente
77
También puede consultar las sugerencias de ignorar de GitHub: help.github.com/articles/ignoring-files ; tienen un depósito de patrones comunes de ignorar
drzaus
66
También puede considerar usar un .gitignore dentro de proyectos individuales. De lo contrario, si usted (o alguien más) clona el proyecto en un nuevo sistema, también tendrá que volver a crear el archivo de exclusión global y la configuración cada vez.
Stan Kurdziel
25
Los archivos ignorables que crea el proyecto deben estar en el archivo .gitignore del proyecto, los archivos ignorables que crea en su máquina deben ir en el archivo .gitignore global (como archivos temporales de editor / IDE y similares).
Pylinux
2
Los directorios del entorno virtual de Python son un caso de uso común para las entradas en mi archivo de exclusión global o local.
Estofado
10
@Pylinux En realidad, por git-scm , IDE personal y cosas específicas del flujo de trabajo pueden ir en el archivo no rastreado .git/info/excludeen el repositorio, por lo que no necesariamente tiene que ir en el archivo global. Además, el archivo gitignore global predeterminado y automático es $HOME/.config/git/ignore.
Acumenus

Respuestas:

1422

Debe core.excludesfileconfigurar su archivo de configuración global para apuntar a este archivo de ignorar global.

p.ej

* nix o Windows git bash:

git config --global core.excludesfile '~/.gitignore'

Cmd de Windows:

git config --global core.excludesfile "%USERPROFILE%\.gitignore"

Windows PowerShell:

git config --global core.excludesfile "$Env:USERPROFILE\.gitignore"

Para Windows se establece en la ubicación C:\Users\{myusername}\.gitignore. Puede verificar que el valor de configuración sea correcto haciendo:

git config --global core.excludesfile

El resultado debería ser la ruta expandida a su perfil de usuario .gitignore. Asegúrese de que el valor no contenga la %USERPROFILE%cadena no expandida .

Importante : Los comandos anteriores solo establecerán la ubicación del archivo de ignorar que usará git. El archivo aún debe crearse manualmente en esa ubicación y rellenarse con la lista de ignorados. (del comentario de muruge )

Puede leer sobre el comando en https://help.github.com/articles/ignoring-files/#create-a-global-gitignore

CB Bailey
fuente
2
Siempre que no esté en su HEADíndice o en su índice, no debería hacer ninguna diferencia si el archivo alguna vez fue rastreado o no. Puede ser útil si agrega el resultado de git status, git config core.excludesfilea su pregunta.
CB Bailey
2
¿Puedo usar #al principio de las líneas dentro ~/.gitignorepara agregar comentarios dentro del archivo global de ignorar?
Dror
99
Las versiones recientes del kit de herramientas oficial de Git para Windows utilizan la sintaxis * nix; Si esta línea no funciona, prueba con el * nix one.
Andy Jones
99
No pude hacer que esto funcionara usando la %USERPROFILE%variable. Tuve que ingresar la ruta completa al archivo usando los separadores de directorio * nix. ej. core.excludesfile C: /Users/User/.gitignore
Vince
21
No se pudo hacer que funcione con la variable% USERPROFILE%. Tuve que usar git config --global core.excludesfile '~ / .gitignore' en Windows para configurarlo en la ubicación C: / users / {myusername} /. Gitignore. Además, el comando anterior solo establecerá la ubicación del archivo de ignorar que usará git. El archivo aún debe crearse manualmente en esa ubicación y rellenarse con la lista de ignorados.
Asesinato
301

Antes de volver a configurar el archivo de exclusión global, es posible que desee comprobar para qué está configurado actualmente, utilizando este comando:

git config --get core.excludesfile

En mi caso, cuando lo ejecuté vi que mi archivo de exclusión global estaba configurado para

~ / .gitignore_global
y ya había un par de cosas listadas allí. Entonces, en el caso de la pregunta dada, podría tener sentido verificar primero un archivo de exclusión existente y agregarle la nueva máscara de archivo.

Yanni
fuente
2
Esto funciona muy bien. Configure su archivo global de gitignore como de costumbre; Una entrada por línea.
Maarten Hartman
237

Aunque otras respuestas son correctas, están configurando el valor de configuración global, mientras que hay una ubicación git predeterminada para el archivo global git ignore:

*nada:

~/.config/git/ignore

Ventanas:

%USERPROFILE%\git\ignore

Es posible que deba crear un gitdirectorio y un ignorearchivo, pero luego puede colocar sus ignoraciones globales en ese archivo y ¡listo!

Fuente

El archivo en el que colocar un patrón depende de cómo se debe usar el patrón.

...

  • Los patrones que un usuario desea que Git ignore en todas las situaciones (por ejemplo, archivos de respaldo o temporales generados por el editor de elección del usuario) generalmente entran en un archivo especificado por core.excludesFileel usuario ~/.gitconfig. Su valor predeterminado es $ XDG_CONFIG_HOME / git / ignore. Si $ XDG_CONFIG_HOME no está configurado o está vacío, se usa $ HOME / .config / git / ignore en su lugar.
Steve Jorgensen
fuente
1
Esto es genial; No sabía sobre esto ... sin embargo, ¿no es este un archivo generado? ¿Se puede sobrescribir cuando actualiza / reinstala?
danielsdesk
1
Creo que el archivo se crea / modifica ejecutando ciertos gitcomandos. Dado que es un archivo de configuración en el directorio de cada usuario, no creo que deba sobrescribirse.
Steve Jorgensen
1
Estoy de acuerdo en que esta debería ser la respuesta aceptada, sin embargo, no encontré esto en -t̶h̶e̶ ̶d̶o̶c̶u̶m̶e̶n̶t̶a̶t̶i̶o̶n̶ un artículo de ayuda ( help.github.com/articles/ignoring-files )
AVProgrammer
1
@AVProgrammer Acabo de editar la respuesta para reflejar el cambio en cómo se organiza el documento fuente.
Steve Jorgensen el
77
Parece que en Windows la ruta también lo es ~/.config/git/ignore.
suriv
40

Para crear gitignore global desde cero:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. La primera línea cambia el directorio a C:/Users/User
  2. Después de eso, crea un archivo vacío con .gitignore_globalextensión
  3. Y finalmente configurando ignorar global a ese archivo.
  4. Luego debe abrirlo con algún tipo de bloc de notas y agregar las reglas de ignorar necesarias.
Phoera
fuente
18

A partir de aquí .

Si crea un archivo en su repositorio llamado .gitignore, git usará sus reglas cuando busque archivos para confirmar. Tenga en cuenta que git no ignorará un archivo que ya haya sido rastreado antes de agregar una regla a este archivo para ignorarlo. En tal caso, el archivo debe estar sin seguimiento, generalmente con:

git rm --cached filename

¿Es tu caso?

LaGrandMere
fuente
Estoy tratando de ignorar a nivel mundial, lo que no está sucediendo!
Mild Fuzz
@MildFuzz en Linux el core.excludesfilearchivo parece ser interpretado de manera diferente a un .gitignorearchivo. Si desea ignorar un directorio completo, simplemente ponga el nombre del directorio como en .vscode/lugar de.vscode/*
Aspiring Dev
11

Si usa el sistema Unix, puede resolver su problema en dos comandos. Donde el primero inicializa las configuraciones y el segundo altera el archivo con un archivo para ignorar.

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore
Purkhalo Alex
fuente
10
  1. Cree un archivo .gitignore en su directorio de inicio
touch ~/.gitignore
  1. Agregue archivos ( no se reconocen las carpetas )

Ejemplo

# these work
*.gz
*.tmproj
*.7z

# these won't as they are folders
.vscode/
build/

# but you can do this
.vscode/*
build/*
  1. Comprueba si un git ya tiene un gitignore global
git config --get core.excludesfile
  1. Dile a git dónde está el archivo
git config --global core.excludesfile '~/.gitignore'

Voila !!

Prerak Mann
fuente
"no se reconocen las carpetas" - Eso está mal, las carpetas simplemente funcionan bien ...
TobiX
7

Recuerda que ejecutando el comando

git config --global core.excludesfile '~/.gitignore'

solo configurará el archivo global, pero NO lo creará. Para Windows, consulte el directorio de usuarios para el .gitconfigarchivo y edítelo según sus preferencias. En mi caso es así:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore
ratón md
fuente
3

Puedo ignorar un .tmprojarchivo si lo incluyo .tmprojo *.tmprojen mi /users/me/.gitignore-globalarchivo.

Tenga en cuenta que el nombre del archivo .gitignore-globalno lo es .gitignore. No funcionó al incluir .tmprojo *.tmprojen un archivo llamado .gitignoreen el /users/medirectorio.

Sri Sankaran
fuente
44
No importa cómo llame a su archivo de ignorar global siempre que coincida con su core.excludesfileconfiguración.
CB Bailey
Ah! Buen punto @CharlesBailey. Sin embargo, esto puede ser algo que el escritor quiera verificar. La razón por la .tmprojque el archivo no se ignora puede deberse a que el usuario excludesfileno lo es .gitignore.
Sri Sankaran
Supongo que pensó que el usuario sería lo suficientemente inteligente como para darse cuenta.
WORMSS
2

Debe crear un archivo de exclusión para esto. Echa un vistazo a esta esencia que se explica por sí misma.

Para hacer frente a su pregunta, sin embargo, es posible que necesite ya sea de-índice del .tmprojarchivo (si ya ha añadido al índice) con git rm --cached path/to/.tmprojo git addy commitsu .gitignorearchivo.

Nic
fuente
Estoy tratando de hacer esto a nivel mundial, no solo por repositorio
Mild Fuzz
Sí, eso es a lo que me vinculé en la esencia. Estaba un poco confundido por la pregunta original. ¿Hiciste el git rm --cached?
Nic
Sí, lo intenté. ¡Me parece que he seguido todos los consejos recomendados! ¿Qué me estoy perdiendo?
Mild Fuzz
Según lo sugerido, agregaría su estado de git y excluye información a la pregunta :)
Nic
2

en el subsistema de Windows para Linux tuve que navegar a la raíz del subsistema para cd ~/entonces touch .gitignorey luego actualizar la configuración global de gitignore allí.

Espero que esto ayude a alguien.

bboydflo
fuente
0

Si está utilizando VSCODE, puede obtener esta extensión para manejar la tarea por usted. Vigila su espacio de trabajo cada vez que guarda su trabajo y lo ayuda a ignorar automáticamente los archivos y carpetas que especificó en la configuración de vscode. Json ignoreit (extensión de vscode)

marcdomain
fuente