.gitignore para directorys a una profundidad específica?

Tengo directorys en components/root/js/ y components/example/js/ , y no quiero que estos sean rastreados por Git.

Sin embargo, tengo un directory components/root/js2/plugins/js/ , que quiero que Git rastree.

Lo busqué en línea y lo encontré solo ** , que creo que no resuelve mi problema.

Mi actual .gitconfig contiene la línea:

 js/ 

Intenté cambiar esto por:

 components/**/js/ 

Pero esto coincide con los components/root/js/ , components/example/js/ , pero también con los components/root/js2/plugins/js/ (una carpeta js debajo del segundo nivel de components ; solo quiero ignorar las carpetas js en el segundo nivel).

¿Cómo puedo lograr este objective?

OK, ¿qué tal esto?

 js/ !components/root/js2/plugins/js/ 

Ignorará todos los directorys llamados js excepto los que se especifican después ! . En tal escenario, git ignorará los components/root/js/ pero no ignorará los components/root/js2/plugins/js/ .

** no funcionará porque como se dice en el man gitignore :

Un "**" final coincide con todo lo que está adentro. Por ejemplo, "abc / **" coincide con todos los files dentro del directory "abc", con respecto a la location del file .gitignore, con profundidad infinita.

Puede colocar files .gitigore en cualquier directory que será una solución más confiable si los directorys se mueven más tarde.

.gitignore 2 files .gitignore :

  • Uno en el proyecto raíz /.gitignore que excluye js

    js

  • Uno en el directory de plugins /components/root/js2/plugins/.gitignore que anula root .gitignore

    ! js

Si el directory de plugins moverá más tarde, por ejemplo, a los components/root/plugins .gitignore se .gitignore .

Si configuras todo en el .gitignore raíz, no debes olvidar editar el .gitignore raíz si el directory se mueve.