2012-10-09 8 views
20

Tengo un árbol de directorios con muchos tipos de archivos diferentes. Hay 300 directorios en el directorio principal. Cada directorio podría tener otros subdirectorios.Configurar git para rastrear solo una extensión de archivo

Solo quiero rastrear * .cocci en todos los subdirectorios. Aquí está mi .gitignore:

* 
!*.cocci 

Pero no funcionan, ya que los archivos en los subdirectorios no se realiza un seguimiento. ¿Cómo puedo decirle a git que solo quiero rastrear * .cocci en todos los directorios secundarios?

+0

¿Ha realidad 'git add'ed los archivos? El solo hecho de configurar '.gitignore' no hace que los archivos sean rastreados automáticamente ... – twalberg

+0

Solo puedo agregar un archivo si uso git add -f . Esto no parece correcto ... –

+0

posible duplicado de [Lista blanca y subdirectorios en Git] (http://stackoverflow.com/questions/9162919/whitelisting-and-subdirectories-in-git) – daviesgeek

Respuesta

33

Lea this question.

que desee:

# Blacklist everything 
* 
# Whitelist all directories 
!*/ 
# Whitelist the file you're interested in. 
!*.cocci 

Nota, esto va a realizar un seguimiento de sólo*.cocci archivos. El suyo no funciona porque ignora todo (esa es la primera línea), que ignora todos los subdirectorios.

+0

Todavía no estoy satisfecho con la salida de estado de git, ya que no muestra el contenido de la carpeta no rastreada, pero el filtro está funcionando ahora. Gracias –

+0

¿Podría cambiar los comentarios en su respuesta? Deben comenzar sus propias líneas. Si pega esto en .gitignore, no funcionará (probado en v.1.9.1). Consulte http://git-scm.com/book/es/v2/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files – panepeter

+1

También es posible que desee incluir .gitignore en la lista blanca. –

-1

¿Has probado !*/*.cocci en lugar de tu !*.cocci?

+0

Gracias por la sugerencia, pero igual resultados ... –

1

Es imposible dejar de ignorar el directorio por !dir en .gitignore, pero todavía es posible añadir el directorio a mano:

git add dir -f 

lo tanto, si el archivo se ve como .gitignore:

* 
!*.txt 

Luego, cuando lo haga git add ., se agregarán los nuevos archivos *.txt. Nuevo directorio no será auto-añadido, que tiene que ser añadido a mano por git add dir -f

1

Para extender la respuesta @simont, si queríamos a la lista blanca *.cocci archivos de un directorio dado y sus subdirectorios que erróneamente habría entrado:

directory/* 
!directory/*/ 
!directory/*.cocci 

Eso parece no incluir *.cocci archivos en directory/subtree.

Con el fin de encontrar todos *.cocci archivos en todos los subdirectorios de directory entraron los siguientes:

directory/** 
!directory/*/ 
!directory/**/*.cocci 
Cuestiones relacionadas