Tengo una estructura de directorios así:
.git/
.gitignore
main/
...
tools/
...
...
Dentro de main y tools, y de cualquier otro directorio, en cualquier nivel, puede haber un directorio 'bin', que quiero ignorar (y quiero ignorar todo lo que hay debajo de él también). He probado cada uno de estos patrones en .gitignore pero ninguno de ellos funciona:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
¿Alguien puede ayudarme? El primer patrón (el que creo que debería funcionar) funciona bien si hago esto:
/main/**/bin/**/*
Pero no quiero tener una entrada para cada directorio de nivel superior y no quiero tener que modificar el .gitignore cada vez que añada uno nuevo.
Esto es en Windows usando la última versión de msysgit.
EDIT: una cosa más, hay archivos y directorios que tienen la subcadena 'bin' en sus nombres, no quiero que esos sean ignorados :)
Antes de la versión 1.8.2, **
no tenía ningún significado especial en .gitignore
. A partir de la versión 1.8.2 git admite que **
signifique cero o más subdirectorios (ver notas de la versión).
La forma de ignorar todos los directorios llamados bin en cualquier lugar por debajo del nivel actual en un árbol de directorios es con un archivo .gitignore
con el patrón
bin/
En la página man
, hay un ejemplo de ignorar un directorio llamado foo
usando un patrón análogo.
Edición:
Si ya tienes alguna carpeta bin en tu índice de git que ya no deseas rastrear, entonces tienes que eliminarla explícitamente. Git no dejará de rastrear rutas que ya están siendo rastreadas sólo porque ahora coincidan con un nuevo patrón .gitignore
. Ejecuta una eliminación de carpetas (rm) sólo desde el índice (--cached) de forma recursiva (-r). Ejemplo de línea de comandos para la carpeta bin raíz:
git rm -r --cached bin
El .gitignore
de tu sueño parece ser:
bin/
en el nivel superior.