He visto preguntas similares ( 1 , 2 y 3 ), pero no obtengo una solución adecuada de ellas.
Necesito ignorar todos los archivos de una carpeta en particular, excepto un tipo de archivo específico. La carpeta es un subdirectorio de la ruta raíz. Déjame nombrar la carpeta Resources
. Como no quiero complicar las cosas, permítanme ignorar los archivos de todas las carpetas con el nombre Resources
que sea.
Esta es la solución más común (en todas las preguntas duplicadas)
# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore
!.gitignore
# Now exclude our type
!*.foo
El problema con esta solución es que deja de rastrear los archivos recién agregados (ya que *
ignora todos los archivos). No quiero seguir excluyendo todos y cada uno de los tipos de archivos. Quiero un comportamiento normal donde si se agrega algún archivo nuevo, lo git status
muestra.
Finalmente obtuve una solución aquí . La solución es agregar otro .gitignore
archivo en la Resources
carpeta. Esto funciona correctamente.
¿Puedo lograr lo mismo con un archivo ignorado? Me parece un poco torpe tener muchos archivos ignorados en diferentes directorios.
Esto es lo que estoy tratando de lograr:
# Ignore everything under Resources folder, not elsewhere
Resources
# Don't ignore directories, so we can recurse into them
!*Resources/
# Now exclude our type
!*.foo
Pero esto da la salida opuesta. Ignora los *.foo
tipos y rastrea otros archivos.
DirectoryName1/** DirectoryName1/**/*
para cada uno de ellos. Primero eliminan directorios, pero necesita el segundo para eliminar todos los tipos de archivos.