¿Por qué estos files no son ignorados por git?

Mi file .gitignore contiene estas líneas:

  xcuserdata/**/* !xcuserdata/**/xcschemes/* 

Pero el siguiente file todavía se rastrea /MyApp/MyApp.xcodeproj/xcuserdata/queues.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist

¿Por que es esto entonces? ¿Cómo puedo arreglar eso?

PD: si tenía MyApp.xcodeproj/xcuserdata/queues.xcuserdatad/xcdebugger , los files se ignoran. Pero no entiendo por qué no los ignora sin este "truco".


EDIT 1

Al contrario de lo que se dice en una de las respuestas, el patrón

  xcuserdata/**/* !xcuserdata/**/xcschemes/* 

trabajos !!! Quiero decir, los files en /xcschemes son rastreados.

Ver también la publicación Git ignora el file para proyectos Xcode , donde obtengo este file .gitignore .

EDIT 2

La versión de My Git es 1.8.3.4 (Apple Git-47) .

EDIT 3

Cuando git check-ignore este file, esto es lo que obtengo

  fatal: Not a git repository (or any of the parent directories): .git 

Pero el hecho es que un directory padre es un directory git …

EDIT 4

Cuando git check-ignore --no-index -- este file, esto es lo que obtengo

 [MT] PluginLoading: Requinetworking plug-in compatibility UUID 37B30044-3B14-46BA-ABAA-F01000C27B63 for plug-in at path '~/Library/Application Support/Developer/Shanetworking/Xcode/Plug-ins/XcodeSnippetsHelper.xcplugin' not present in DVTPlugInCompatibilityUUIDs 2014-02-10 10:03:50.856 xcodebuild[1496:d07] XcodeColors: load (v10.1) 2014-02-10 10:03:50.859 xcodebuild[1496:d07] XcodeColors: pluginDidLoad: fatal: Not a git repository (or any of the parent directories): .git 

EDIT 4bis

Desde la carpeta raíz:

  • si no uso la opción no-index , no hay respuesta a git check-ignore .

  • si uso la opción no-index : obtengo el error de error: unknown option 'no-index'

Extraño; -!

Primero, puedes hacer un git check-ignore git (git 1.8.3.3+) para ver qué regla está ignorando tu file (asumiendo que no estaba en el índice en primer lugar)

Segundo, lea " .gitignore exclude folder pero incluya una subcarpeta específica ":

No es posible volver a include un file si se excluye un directory principal de ese file . ( * )
( * : a less que se cumplan ciertas condiciones en git 2.8+, ver a continuación)
Git no enumera los directorys excluidos por razones de performance, por lo que los patrones en los files contenidos no tienen ningún efecto, sin importar dónde estén definidos.

Por lo tanto, el file de xcschemes no sería ignorado de todos modos.
Necesitaba ignorar la carpeta principal por carpeta principal .
Pero un mejor enfoque es ignorar solo los files y luego excluir la carpeta:

 xcuserdata/** !xcuserdata/**/ !xcuserdata/**/xcschemes/** 

Restring:

gitignore excluir carpetas de las reglas de gitignore antes de poder excluir files.


Tenga en count que con git 2.9.x / 2.10 (¿a mediados de 2016?), Es posible volver a include un file si se excluye un directory padre de ese file si no hay ningún comodín en la ruta reincorporada .

Nguyễn Thái Ngọc Duy ( pclouds ) está intentando agregar esta característica:

  • commit 506d8f1 para git v2.7.0, revertido en commit 76b620d git v2.8.0-rc0
  • commit 5e57f9c git v2.8.0-rc0, … revertido (!) en commit 5cee3493 git 2.8.0-rc4.

Sin embargo:

La parte de directory en las reglas de reincorporación debe ser literal (es decir, sin comodines)

Entonces eso no habría funcionado aquí de todos modos.

Agregar nombres de files a .gitignore ayuda a evitar que agregue los files involuntariamente. Si haces algo como git add . para agregar una carpeta llena de files al repository, no se agregarán los files (o types de files) ignorados en .gitignore . Tendrían que agregarse usando el indicador -f con el command git add . No cambiará nada si los files ya están rastreados.

Puede detener el seguimiento de los files mediante la respuesta a la pregunta: Eliminar un file de un repository de Git sin eliminarlo del sistema de files local

editar: después de volver a leer la pregunta unas cuantas veces más, creo que puede tener aproximadamente el mismo problema que se abordó en esta respuesta: .gitignore: ignore cualquier directory 'bin'