Git ignora todo excepto la subcarpeta

Busqué otras preguntas pero no encuentro una solución funcional para mi proyecto. Al tener un proyecto de Magento, quiero excluir todo, excepto esto:

/app/design/frontend/default/theme_name # and obviously all subfolders /skin/frontend/default/theme_name # and all subfolders 

He intentado muchas combinaciones pero sin suerte. Actualmente estoy atascado con este file .gitignore:

 * !/app/ !/app/* app/* !/app/design/ !/app/design/* 

Pero no funciona recursivamente debajo de la carpeta de layout. Solo agregué un file de testing dentro de la carpeta de layout que creé.

Mira mi respuesta aquí: No puedo entender cómo gitignore ignora las carpetas

Citando de eso:

La siguiente discusión fue útil: http://git.661346.n2.nabble.com/negated-list-in-gitignore-no-fun-td1675067.html , especialmente lo siguiente de Linus:

Eso es por layout. Has elegido ignorar esos directorys; ellos coinciden con "*" ellos mismos. Por lo tanto, 'git add'. no desciende a ellos buscando files.

Entonces, básicamente, para cada nivel en el que debe ingresar, desactive la carpeta e ignore los contenidos dentro de esa carpeta.

Además, debe tener .gitignore en el subdirectory en lugar de en el nivel raíz, ya que se vuelve bastante complejo si debe ir al nivel del subdirectory desde el .gitignore raíz debido a la explicación anterior, por la cual para cada nivel, tiene que Desactivar la carpeta y luego ignorar los contenidos, etc.

Hice algunas investigaciones aquí. Lo que funcionó para mí fue:

 /* !/directory !/another /another/* !/another/directory 

Con esto, los subdirectorys del /directory se rastrearon correctamente. Curiosamente, no funciona con solo / o solo * en la primera línea, no estoy seguro de por qué.