Ignorar cualquier directorio 'bin' en un proyecto git

Resuelto Ben Hymers asked hace 15 años • 16 respuestas

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.

Ben Hymers avatar Sep 24 '09 16:09 Ben Hymers
Aceptado

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 binen cualquier lugar por debajo del nivel actual en un árbol de directorios es con un .gitignorearchivo con el patrón:

bin/

En la manpágina, hay un ejemplo de cómo ignorar un directorio llamado foousando un patrón análogo.

Si ya tiene bincarpetas 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 .gitignorepatró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
CB Bailey avatar Sep 24 '2009 09:09 CB Bailey

El .gitignorede tu sueño parece ser:

bin/

en el nivel superior.

Michael Krelin - hacker avatar Sep 24 '2009 09:09 Michael Krelin - hacker

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/

plancys avatar May 13 '2015 08:05 plancys