2011-02-16 23 views
26

He buscado, buscado y leído la documentación y realmente no puedo encontrar nada al respecto.¿Git admite comodines en las rutas?

Básicamente, quiero ser capaz de hacer esto:

git reset -- *.exe 

o

git reset -- */some_executable.exe 

lugar de esto:

git reset -- some/very/long/path/some_executable.exe 

También sería bueno poder para hacer esto:

git reset -- topleveldirectory/another/subdirectory/* 

lugar de esto:

git reset -- topleveldirectory/another/subdirectory/SomeFile.cpp 
git reset -- topleveldirectory/another/subdirectory/SomFile.h 

I que puedo utilizar el comodín * en git-add para añadir archivos, pero no han encontrado nada que funcione en el caso anterior.

¿Alguna sugerencia o punteros a donde puedo buscar más información?

Usando: git versión 1.7.3.1.msysgit.0 de 64 bits de Windows 7

Respuesta

15

Git es compatible con algunos pathspec globbing, pero hay que tener cuidado de concha escapar de los personajes para que no se interpretan en su caso, msys bash, que no es compatible con la expansión de comodines más sofisticada.

EDITAR: Además, para su ejemplo de reinicio, puede simplemente pasar el directorio como un argumento para reiniciar git y git operará recursivamente.

git reset my/long/path 

en lugar de

git reset my/long/path/* 
+0

Ok, tha t ayuda. ¡Gracias! –

+1

¡Oye, eso no funciona en absoluto! Tengo un montón de archivos java y ejecuta git log --all - '\ *. Java' no produce nada. encontrar. -name '\ *. java' salidas toneladas. –

+0

Eso está en git 1.7.4.4 en Linux. –

4

Al menos en el caso de las subcarpetas/subarchivos, no hay necesidad de un comodín.

git add . 

... agrega el directorio actual (.) Y todo lo que hay debajo. Lo mismo vale para ...

git add files/ 

... lo que añadiría ./files, ./files/foo.txt y ./files/foo/bar.txt.

+0

Genial, gracias. –

8

En algunos casos, sin embargo, uno no necesita utilizar comodines de una manera específica para llegar a un subconjunto específico de archivos y no sólo a todos los archivos, sobre todo cuando se trabaja con git rm, o git checkout o git reset. Puedes lograr lo mismo simplemente escapando del personaje comodín.

git rm app/assets/javascript/templates/projects/\*.jst.ejs 
4

Para restablecer todos los archivos ejecutables de forma recursiva a partir de una carpeta git, se puede hacer lo siguiente:

git reset -- \*.exe 

O si desea añadir todos los archivos de Java dentro de una subcarpeta específica que pueda hacer eso también, como este:

git add ./some/sub/folder/path/**/*.java 

donde ** significa que todas las carpetas de forma recursiva a partir de este punto en la trayectoria

Cuestiones relacionadas