Estoy tratando de evitar el siguiente patrón en mi .gitignore
archivo.
MyPrject/WebApp/Scripts/special/*.js
MyPrject/WebApp/Scripts/special/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*/*.js
Nosotros tratamos:
MyPrject/WebApp/Scripts/special/**.js
MyPrject/WebApp/Scripts/special/**/*.js
Sin embargo, esto no funcionó. Esto es git en Windows. ¿Existe una forma más concisa de hacer esto sin repetir las cosas?
Respuestas:
A partir de git 1.8.2, esto:
Debería funcionar de acuerdo con esta respuesta . También me funciona en Windows 7 usando Sourcetree 1.6.12.0 y la versión de git que instala (1.8.4-preview20130916).
Para ignorar todos los archivos y carpetas de un directorio de forma recursiva:
fuente
/
al principio. Ejemplo:/MyProject/WebApp/Scripts/special/**/*.js
.gitignore
en esta pregunta estaba en la raíz del repositorio (directorio principal de/Webapp
).foo/bar/*/*
(segunda línea)!foo/bar/**/*.js
Funcionó solo para un nivel de subdirectorios, pero no de forma recursiva.Siguiente página de manual de gitignore:
Entonces, esto claramente significa que no hay forma de especificar una cierta cantidad de directorios entre dos cadenas, como entre
special
yjs
.Sin embargo, puede tener un
.gitignore
archivo por directorio, por lo que tal vez en su caso el siguiente contenidoen el siguiente lugar
sería suficiente?
fuente
MyPrject/WebApp/Scripts/special*.js
y encajabaMyPrject/WebApp/Scripts/specialfile.js
tan bien comoMyPrject/WebApp/Scripts/special/a/b/c/file.js
. Sin embargo, por alguna razón, el comportamiento ha cambiado y mi solución actual es enumerar los directorios individualmente. Estoy usando GitHub para Windows.find MyPrject/WebApp/Scripts/special -type d -printf 'echo "*.js" >> %h/.gitignore\n git add %h/.gitignore\n' | sh
Esto me funciona en osx.
fuente
Intente ejecutar
git rm -r --cached MyPrject/WebApp/Scripts/special/
Su directorio mencionado podría haber sido almacenado en caché por git y aparecerá en archivos sin seguimiento. Después de borrar el caché, asegúrese de tenerlo mencionado.gitignore
.fuente