Git Ignora todo en un directorio excepto subcarpetas


Esta es mi estructura de carpetas:

data/
    .gitignore
    uploads/
        .gitignore

Me gustaría confirmar las carpetas pero no los archivos dentro de ellas.

Así que añado a .gitignore archivos en cada carpeta con el siguiente contenido:

# Ignore everything in this directory
*
# Except this file
!.gitignore

El problema es que * también coincide en los directorios, por lo que git solo rastrea data/.gitignore

Author: Rndm, 2013-09-21

3 answers

Por favor no mal uso .gitignore archivos. Mejor apégate a las formas predeterminadas de hacerlo, para que los desarrolladores posteriores puedan entrar rápidamente en tu proyecto.

  1. Agregue un archivo .gitkeep vacío en las carpetas que desea confirmar sin los archivos
  2. Excluye las carpetas, pero no el .gitkeep de tu principal .gitignore archivo.

    folder/*
    !folder/.gitkeep
    

Esto ignora todos los archivos de una carpeta, pero no el archivo .gitkeep. Ahora la carpeta se comprometerá con solo el archivo .gitkeep como contenido.

 49
Author: kaiser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-25 12:37:10

La solución es bastante fácil, añadir !*/ a la .los archivos gitignore y solo los archivos de la carpeta actual serán ignorados

# Ignore everything in this directory
*
# Except this file
!.gitignore
# Except folders
!*/
 33
Author: nickel715,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-21 07:32:10

Prueba esto:

*.*
!.gitignore
!*/*
 -3
Author: emisilva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-17 21:59:05