pattern - not ignore git
¿Cómo le digo a Git que ignore todo excepto un subdirectorio? (9)
Quiero ignorar todos los archivos de mi repositorio, excepto los que se encuentran en el subdirectorio bin
. Intenté agregar lo siguiente a mi .gitignore
:
*
!bin/*
Sin embargo, esto no tiene el efecto deseado: creé un nuevo archivo dentro de bin/
, pero el git status
todavía nothing to commit (working directory clean)
muestra nothing to commit (working directory clean)
.
¿Alguna sugerencia?
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
Creo que una mejor manera sería anclar cada patrón al directorio superior de git iniciando el patrón con una barra inclinada:
/*
!/public_html
!/.gitignore
En lugar de ignorar todos los archivos, solo ignorará los archivos de nivel superior, no los del directorio que no desea ignorar.
Debe excluir todo en el camino a los destinos, pero debe incluir los destinos:
Nota: Este es un archivo de exclusión (es decir, .gitignore) por lo que la lógica está invertida. Ignore todo, excepto el directorio tsp, ignore 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
Del documento oficial de Git , uno de los ejemplos dice:
Ejemplo para excluir todo, excepto un directorio específico foo / bar (tenga en cuenta el / * - sin la barra inclinada, el comodín también excluiría todo dentro de foo / bar):
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
Para obtener una explicación sobre la barra diagonal: Cuándo usar la barra diagonal en gitignore .
El único problema que tiene es que el directorio bin
no coincide con el patrón bin/*
, por lo que git ni siquiera se ve en el directorio bin
.
Hay dos soluciones que vienen a la mente.
.gitignore
:
*
!/bin/
!bin/*
o
.gitignore
:
*
!/bin/
bin/.gitignore
:
!*
Prefiero la segunda solución ya que la primera solución no dejará de ignorar los archivos en el directorio bin
que están en subdirectorios que no se llaman bin
. Esto puede o no importar en su situación.
Este .gitignore
funciona para mí:
*/
/*
!bin/
Esto ignora los archivos raíz y los directorios raíz, luego ignora el directorio raíz del bin:
/*
/*/
!/bin/
De esta forma, obtiene todo el directorio bin, incluidos los subdirectorios y sus archivos.
Intenta seguir en la última versión de GIT.
*
!*/
!/path/to/your/dir/**
prueba este error oscuro de git.
!bin**/**
Espero eso ayude :)
Soporte de documentos git muestra de error
PD: pruébalo antes de comentar.