Ignorar cualquier directorio 'bin' en un proyecto git
Tengo una estructura de directorio como esta:
.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 también quiero ignorar todo lo que hay debajo). Probé cada uno de estos patrones en .gitignore pero ninguno funciona:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
¿Puede alguien 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 .gitignore cada vez que agrego uno nuevo. También hay archivos y directorios que tienen la subcadena 'bin' en sus nombres, que quiero conservar .
Esto es en Windows usando la última versión de msysgit.
Antes de la versión 1.8.2, **
no tenía ningún significado especial en el archivo .gitignore
. A partir de 1.8.2, git admite **
cero o más subdirectorios (consulte las 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 .gitignore
archivo con el patrón:
bin/
En la man
página, hay un ejemplo de cómo ignorar un directorio llamado foo
usando un patrón análogo.
Si ya tiene bin
carpetas en su índice de git que ya no desea rastrear, entonces debe eliminarlas explícitamente. Git no dejará de rastrear rutas que ya están siendo rastreadas solo porque ahora coincidan con un nuevo .gitignore
patrón. Ejecute una eliminación de carpeta ( rm ) solo del índice ( --cached ) de forma recursiva ( -r ). Ejemplo de línea de comando para la carpeta bin raíz:
git rm -r --cached bin
El .gitignore
de tu sueño parece ser:
bin/
en el nivel superior.
Creo que vale la pena mencionarlo para los principiantes en git:
Si ya tiene un archivo registrado y desea ignorarlo, Git no ignorará el archivo si agrega una regla más adelante . En esos casos, primero debe eliminar el seguimiento del archivo ejecutando el siguiente comando en su terminal:
git rm --cached
Entonces, si desea agregar para ignorar algunos directorios en su repositorio local (que ya existen) después de editar .gitignore, desea ejecutar esto en su directorio raíz.
git rm --cached -r .
git add .
Básicamente, "actualizará" su repositorio local y eliminará los archivos ignorados.
Ver:
http://git-scm.com/docs/git-rm ,
https://help.github.com/articles/ignoring-files/