git: ¿Cómo agrego recursivamente todos los files en un subtree de directory que coinciden con un patrón global?

Tengo varios files .screen dentro de /xxx/documentation y sus subdirectorys que ya son rastreados por Git.

Después de modificar muchos de estos files de pantalla, ejecuto git add documentation/\\*.screen -como lo indica el primer ejemplo en la documentation de git-add -para escenificar estos files, pero el command falla:

  fatal: la documentation de pathspec / \ *. screen 'no coincide con ningún file 

¿Mi command es malo o git tiene un error?

Es un error en la documentation. Citar el asterisco con

  $ git add documentation / \ *. screen 

o

  $ git add 'documentation / *. screen' 

para get el comportamiento que desea.

Si, en cambio, desea agregar files solo en el directory actual, use

  $ git add * .screen 

ACTUALIZACIÓN: Envié un parche que corrige el problema, ahora corregido a partir de la versión 1.6.6.2.

Intenté la respuesta aceptada, pero no funcionó para mí … así que aquí está la mía solo en caso de que alguien quiera hacer su trabajo sin perder time parsing varios aspectos que podrían causar el problema:

 find documentation -name "*.screen" | xargs git add -u 

// la opción -u de agregar git agrega al índice solo los files que fueron rastreados y modificados previamente

Le dijiste al shell que searcha *.screen (es decir, exactamente esta cadena, que no existe, en lugar de lo que quieres "todos los files que terminan en .screen . Omita \\ para que el shell pueda expandir el nombre del file) para ti.

Esto es lo que acabo de utilizar para un problema similar de git al agregar todos los files en un directory:

 find . | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

Para la pregunta original, el command sería:

 find -name "*.screen" | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

Tenga en count que estoy tratando con el caso donde un nombre de file completamente especificado contiene espacios. Por eso mi respuesta. Edite la parte antes de la primera | para seleccionar diferentes files para agregar.

tratar

 git add ./documentation/*.screen 

git add * .java funciona para que agregue recursivamente todos los files java