¿Cómo le digo a Git que ignore todo excepto un subdirectorio?
Quiero ignorar todos los archivos de mi repositorio excepto los que se encuentran en el bin
subdirectorio. Intenté agregar lo siguiente a mi .gitignore
:
*
!bin/*
Sin embargo, esto no tiene el efecto deseado: creé un nuevo archivo dentro de bin/
, pero al hacerlo git status
todavía se muestra nothing to commit (working directory clean)
.
¿Alguna sugerencia?
Esto ignora los archivos raíz y los directorios raíz, luego ignora el directorio raíz bin:
/*
/*/
!/bin/
De esta manera obtienes todo el directorio bin, incluidos los subdirectorios y sus archivos.
Aquí cómo ignorar todo excepto un directorio " MY_SUPER_DUPER_TEMPLATE_directory " en algún directorio
Estructura: /bitrix/templates/ MY_SUPER_DUPER_TEMPLATE_directory
/*
!/bitrix
/bitrix/*
!/bitrix/templates
/bitrix/templates/*
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
*.DS_Store
*.gitignore
Debes excluir todo en el camino a los destinos, pero debes incluir los destinos:
Nota: Este es un archivo de exclusión (es decir, .gitignore), por lo que la lógica se invierte. Ignorar todo, excepto el directorio tsp, ignorar todo en el directorio tsp, excepto el directorio src...
/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore
El único problema que tiene es que el bin
directorio en sí no coincide con el bin/*
patrón, por lo que git ni siquiera busca en el bin
directorio.
Hay dos soluciones que me vienen a la mente.
.gitignore
:
*
!/bin/
!bin/*
o
.gitignore
:
*
!/bin/
bin/.gitignore
:
!*
Prefiero la segunda solución ya que la primera solución no deja de ignorar archivos en los bin
directorios que están en subdirectorios que no se llaman bin
. Esto puede importar o no en su situación.