ACTUALIZACIÓN: Eche un vistazo a @Joey's answer: Git ahora es compatible con la sintaxis **
en los patrones. Ambos enfoques deberían funcionar bien.
Los gitignore(5) man page estados:
patrones leídos desde un archivo .gitignore en el mismo directorio que el camino, o en cualquier directorio padre, con motivos en los archivos de nivel superior (hasta el nivel superior del árbol de trabajo) que los archivos de nivel inferior anulan al directorio que contiene el archivo.
Lo que esto significa es que los patrones en un archivo .gitignore
en cualquier directorio dado de tu repositorio afectarán ese directorio y todos los subdirectorios.
El patrón que proporciona
/public/static/**/*.js
no es del todo bien, en primer lugar porque (como se ha anotado correctamente) la sintaxis **
no es utilizado por Git. Además, el /
líder ancla ese patrón al inicio del nombre de ruta. (Por lo tanto, /public/static/*.js
coincidirá con /public/static/foo.js
pero no /public/static/foo/bar.js
.)
Extracción del líder
/
tampoco funcionará, igualando caminos como
public/static/foo.js
y
foo/public/static/bar.js
.
EDITAR: La eliminación de la barra diagonal no funcionará tampoco: como el patrón contiene una barra oblicua, Git lo trata como un englobador de shell sin recurrencia (gracias @Joey Hoer para señalar esto).
Como @ptyx sugirió, lo que hay que hacer es crear el archivo <repo>/public/static/.gitignore
e incluir solo este patrón:
*.js
No hay líder /
, por lo que coincidirá en cualquier parte de la ruta, y ese patrón solo se aplicará a los archivos en el directorio /public/static
y sus subdirectorios.
posible duplicado de [Git-ignore ciertos archivos en subdirectorios, pero no todos] (http://stackoverflow.com/questions/6794717/git-ignore-certain-files-in-sub -directories-but-not-all) –