2011-09-23 12 views
41

He creado el archivo .gitignore_global y lo puse en mi directorio de instalación de git. Cuando ejecuto el comando:Git global ignore no funciona

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

las reglas en el archivo de ignorar no se aplican a mis confirmaciones.

Cuando renombre el archivo .gitignore y lo coloque en la raíz de mi proyecto, se aplicarán las reglas.

¿Qué pasa aquí?

+0

@Jarrod '~/.gitignore_global' era lo que significaba el OP y solo un error en el post, aunque aceptó mi respuesta, entonces tu edición no es buena d – CharlesB

Respuesta

109

Tal vez usted tiene que hacer:

git config --global core.excludesfile ~/.gitignore_global 

Y tener un poco de café.

+0

Lo siento es lo que quise decir. El que yo copié solo estaba jugando para ver qué funcionó. – user880954

+0

Verdad para el café y los dientes. ¿Estás seguro de que .gitignore_global está en tu $ HOME? ¿Dices que lo instalaste en el directorio de instalación de git? – CharlesB

+0

¿Alguna idea de por qué todavía no funciona aquí? Obtuve un archivo .7z que quiero omitir; Agregué estas reglas: https://gist.github.com/octocat/9257657; y después de cambiar el archivo, todavía se versiona en .git :( –

3

El archivo debe estar en su directorio de inicio. En Windows, generalmente significa: C: \ documents and settings \ [user].

En Linux es: /home/[usuario]

4

Nota: a partir git1.7.12 (August 2012):

El valor de:

  • core.attributesfile por defecto es $ HOME/.config/git/attributes y
  • core.excludesfile se configuran por defecto a $HOME/.config/git/ignore respectivamente cuando existen estos archivos.

lo tanto, si se crea un archivo $HOME/.config/git/attributes, que ni siquiera tiene que establecer la configuración de core.excludesfile.

8

He descubierto que cuando yo había definido así:

git config --global core.excludesfile $HOME/.config/git/ignore 

no funcionó. Si lo cambia a no utilizar la variable HOME $, así:

git config --global core.excludesfile ~/.config/git/ignore 

inmediatamente comenzó a trabajar. Espero que esto ayude a alguien más.

FYI:

$ git --version 
git version 1.7.10.2 (Apple Git-33) 
+0

Observé esto también. Rastreé la documentación pero no encontré nada: además de .gitignore (por directorio) y .git/info/exclude, git busca en este archivo patrones de archivos que no deben rastrearse. "~ /" se expande al valor de $ HOME y "~ user /" al directorio de inicio del usuario especificado. – rliu

46

pensaba que iba a hacer mella en esto. Hay otra razón por la cual el archivo global de ignorar parece no estar funcionando. Es algo que no creo que haya sido cubierto en respuestas anteriores. Es tan obvio que - por supuesto - es muy fácil perderse.

Es decir, que git solo ignorará los archivos nuevos. Si el archivo ya está siendo rastreado por git, entonces ¡por supuesto git no lo ignorará! Por lo tanto, cualesquiera patrones en cualquier archivo gitignore o excludeno se aplica.

Eso tiene sentido. ¿Por qué git querría ignorar las modificaciones a los archivos que ya está rastreando?Si se debe ignorar el archivo, primero debe indicar a git que no lo rastree, luego git lo ignorará como se describe en el manual. Para obtener información sobre cómo destrabar archivos, see this answer.

Todo esto me lleva a preguntar, ¿es posible ignorar los cambios en los archivos rastreados? Nuevamente, Git cumple. Esta respuesta; Git: Ignore tracked files nos da la orden:

git update-index --assume-unchanged file

Por último, aquí hay algo de información adicional sobre la depuración de git ignorar.

El gitignore(5) Manual Page nos dice:

Patrones cual un usuario desea Git para ignorar en todas las situaciones (por ejemplo, copias de seguridad o archivos temporales generados por el editor de la elección del usuario) generalmente van en un archivo especificado por el núcleo. excludefile en el ~/.gitconfig del usuario. 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.

Por lo tanto, esto es nuevo y reemplaza al anterior ~/.gitignore_global mencionado anteriormente.

A continuación, y esto es realmente útil, es que a partir del 1.8.2, ahora tenemos algunas excelentes herramientas de depuración. Echar un vistazo a:

Git Learns to Ignore Better - New in 1.8.2

Esto demuestra cómo utilizar la nueva bandera check-ignore para verificar que git está ignorando con éxito sus patrones, por ejemplo,

git check-ignore bin/a.dll --verbose

+1

'git update-index --assume-unchanged file' era exactamente lo que estaba buscando, ¡Gracias! – Jai

0

Otra difícil de rastrear por lo .gitignore (_global) no aparece de trabajo podrían estar llevando espacios en las líneas. El archivo no perdona espacios principales. Así que asegúrese de que cada línea de su archivo no tenga ninguna a menos que sea una línea en blanco. Me tomó un tiempo darme cuenta.

Solo agrego mis dos centavos.

2

Tuve este problema porque inicialmente había llamado 'git config core.excludefiles' sin --global y con un valor incorrecto, y por lo tanto, había almacenado la propiedad localmente. Parece que la propiedad local ocultó la global (que tenía el valor correcto), ignorándola por completo.

0

recientemente he cometido un error y ejecute el siguiente comando git config core.excludesfile tags esto cambió la trayectoria excludesfile en un archivo local en el repositorio actual, y esta configuración se ha escrito en el fichero de configuración local bajo .git/config, por lo que arreglar eso me acaba de abrir el archivo .git/config y borró la línea excludesfile tags y todo vuelve a la normalidad.

0

Estaba teniendo el mismo problema (en Windows). Terminé de revisar mi archivo ~/.gitconfig y encontré que mi excludesfile se estableció en:

excludesfile = C:\\Users\\myUserName\\Documents\\gitignore_global.txt 

pero debería haber sido:

excludesfile = C:\\Users\\myUserName\\.gitignore_global 

Después de haber cambiado, todo funcionaba como debería.

0

Otra razón por la que un git global ignora puede no estar funcionando: caracteres invisibles en la ruta.

Sólo me enteré que era mi problema al pegar el mensaje de advertencia de git-check-ignore en la barra de direcciones de Chrome, donde afortunadamente se hizo visible:

enter image description here

(No era visible en la terminal. Y esto podría haber sido un largo conejo de depuración ...)