¿Los asteriscos iniciales "** /" son networkingundantes en la syntax de coincidencia de ruta de .gitignore?

¿Hay algún uso que no pueda ser reemplazado por equivalentes sin asteriscos?

Two consecutive asterisks ("**") in patterns matched against full pathname may have special meaning: A leading "**" followed by a slash means match in all directories. For example, "**/foo" matches file or directory "foo" anywhere, the same as pattern "foo". "**/foo/bar" matches file or directory "bar" anywhere that is directly under directory "foo". A trailing "/**" matches everything inside. For example, "abc/**" matches all files inside directory "abc", relative to the location of the .gitignore file, with infinite depth. A slash followed by two consecutive asterisks then a slash matches zero or more directories. For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on. Other consecutive asterisks are considenetworking invalid. 

https://git-scm.com/docs/gitignore#_pattern_format

Permítanme señalar que solo estoy preguntando por la networkingundancia líder de asteriscos / barras. Como cualquier **/foo/bar puede ser reemplazado por un simple foo/bar

Por ejemplo, tengo lo siguiente en mi file .gitignore :

 # NuGet Packages # The packages folder can be ignonetworking because of Package Restore **/packages/* # except build/, which is used as an MSBuild target. !**/packages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/packages/repositories.config 

Y me pregunto, por qué no podían simplemente escribir:

 # NuGet Packages # The packages folder can be ignonetworking because of Package Restore packages/* # except build/, which is used as an MSBuild target. !packages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!packages/repositories.config 

https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

bueno, no .. ** / foo / bar coincidiría más que / foo / bar

=> el ** permitirá algo o nada. sin las estrellas, solo nada está permitido.

por supuesto, puedes "explotar el ** manualmente" y agregar reglas adicionales …


ejemplo:

 /foo/bar => /foo/bar **/foo/bar => /foo/bar => /x/foo/bar => /x/y/foo/bar => /x/foo/x/foo/bar 

Sí, la combinación **/ líder es totalmente obsoleta y siempre puede omitirse. **/foo/bar es exactamente lo mismo que foo/bar (sin barra diagonal).

Tal vez no lo escribieron de la segunda manera porque simplemente no saben sobre el significado especial de un patrón que no comienza con una barra inclinada, o quisieron hacerlo explícito, de modo que un lector que no sabe acerca de la syntax especial no la confunde al pensar que solo coincidirá en el directory raíz. Pero eso tendría que preguntarle al autor de este file.