una - ignorar archivos git
ignorando cualquier directorio ''bin'' en un proyecto git (13)
Tengo una estructura de directorios 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 quiero ignorar todo lo que hay debajo de él). 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
¿Puede alguien ayudarme? El primer patrón (el que creo que debería estar funcionando) 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.
Esto está en Windows usando el último msysgit.
EDITAR: una cosa más, hay archivos y directorios que tienen la subcadena ''bin'' en sus nombres, no quiero que se ignoren :)
Agregar ** / bin / al archivo .gitignore hizo el truco por mí (Nota: la carpeta bin no se agregó al índice).
Antes de la versión 1.8.2, **
no tenía ningún significado especial en el .gitignore
. A partir de la versión 1.8.2, git admite **
para significar cero o más subdirectorios (consulte las notas de la versión ).
La forma de ignorar todos los directorios llamados bin en cualquier lugar debajo del nivel actual en un árbol de directorios es con un archivo .gitignore
con el patrón:
bin/
En la página de man
, hay un ejemplo de ignorar un directorio llamado foo
usando un patrón análogo.
Editar: Si ya tiene alguna carpeta bin en su índice de git que ya no desea rastrear, debe eliminarlas explícitamente. Git no detendrá el seguimiento de las rutas que ya se están siguiendo solo porque ahora coinciden con un nuevo patrón .gitignore
. Ejecute una carpeta eliminar ( rm ) solo de índice ( --cached ) recursivamente ( -r ). Ejemplo de línea de comando para carpeta de raíz:
git rm -r --cached bin
Como un aviso;
Si piensa que .gitignore
no funciona de una manera (por lo tanto, agregue la carpeta foo/*
en ella, pero el git status
sigue mostrando el contenido de esa carpeta como modificado o algo así), entonces puede usar este comando;
git checkout -- foo/*
Creo que vale la pena mencionar para los principiantes 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 deshacer 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 existe) 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 anulará los archivos ignorados.
Ver:
El **
nunca funcionó correctamente antes, pero desde git 1.8.2 (8 de marzo de 2013) , parece ser mencionado y apoyado explícitamente:
Los patrones en los archivos
.gitignore
y.gitattributes
pueden tener**/
, como un patrón que coincide con 0 o más niveles de subdirectorio .Por ejemplo, "
foo/**/bar
" coincide con "bar
" en "foo
" en sí mismo o en un subdirectorio de "foo
".
En su caso, eso significa que esta línea podría ahora ser compatible:
/main/**/bin/
El .gitignore
de tu sueño parece ser:
bin/
en el nivel superior
Literalmente, ninguna de las respuestas realmente funcionó para mí; El único que funcionó para mí fue (en Linux):
**/bin
(yes without the / in the end)
git version 2.18.0
No lo vi mencionado aquí, pero esto parece ser sensible a las mayúsculas y minúsculas. Una vez que cambié a / Bin, los archivos fueron ignorados como se esperaba.
Si está buscando un excelente archivo .gitignore
global para cualquier solución de Visual Studio (.NET), le recomiendo que use este: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
AFAIK tiene el .gitignore
más completo para proyectos .NET.
para 2.13.3 y en adelante, escribir solo bin en su archivo .gitignore debe ignorar el bin y todos sus subdirectorios y archivos
compartimiento
[Bb]in
resolverá el problema, pero ... Aquí hay una lista más extensa de cosas que debes ignorar (lista de muestra por GitExtension):
#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
Paso 1: Agregue el siguiente contenido al archivo .gitignore.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
# Visual Studio 2015 cache/options directory
.vs/
Paso 2: Asegúrate de tener efecto
Si el problema persiste, es porque la configuración en .gitignore solo puede ignorar los archivos que originalmente no fueron rastreados . Si algunos archivos ya se han incluido en el sistema de control de versiones, la modificación de .gitignore no es válida. Para resolver este problema por completo, debe abrir Git Bash o la Consola del administrador de paquetes (vea la captura de pantalla a continuación) para ejecutar los siguientes comandos en la carpeta raíz del repositorio.
$ git rm -r --cached .
$ git add .
$ git commit -m ''Update .gitignore''
[Bb]in/
coincide con mayúsculas y minúsculas