2010-11-22 19 views
382

Duplicar posible:
How do I add an empty directory to a git repository¿Cómo se puede ignorar todos los archivos/carpetas en una carpeta, pero no la carpeta en sí?

Quiero comprobar en una carpeta en blanco. ¿Cómo puedo hacer esto?

+7

Tengo un directorio de carga. Quiero confirmar el directorio en blanco, pero sin todos los contenidos. –

+4

Tenía exactamente lo mismo. Acabo de agregar un archivo README al que explica que este es el directorio de carga y git lo entendió :) – Evgeny

+0

Has respondido bastante a tu propia pregunta: pon un .gitignore que diga "ignorar todo" en esa carpeta; esta es la respuesta de mipadi – Cascabel

Respuesta

251

No puede asignar carpetas vacías en git. Si quieres que aparezca, necesitas poner algo en él, incluso solo un archivo vacío.

Por ejemplo, añadir un archivo vacío llamado .gitkeep a la carpeta que desea guardar, a continuación, en el archivo de escritura .gitignore:

# exclude everything 
somefolder/* 

# exception to the rule 
!somefolder/.gitkeep 

Commit su .gitignore y archivos .gitkeep y esto debe resolver su problema.

+0

¿No hay una opción '--bare'? – luckytaxi

+8

@luckytaxi: Un repositorio desnudo es uno sin árbol de trabajo. No tiene nada que ver con esto. – Cascabel

+24

La mejor manera es la mencionada anteriormente por Trianam. Incluya un archivo .gitignore en el directorio. Este .gitignore debe ignorar todos los archivos dentro de ese directorio (*), excepto a sí mismo (! .gitignore). –

908

poner esto .gitignore en la carpeta, a continuación, git add .gitignore

* 
*/ 
!.gitignore 

La línea * le dice a Git que ignore todos los archivos de la carpeta, pero !.gitignore le dice a Git que todavía incluyen el archivo .gitignore. De esta forma, su repositorio local y cualquier otro clon del repositorio obtienen tanto la carpeta vacía como el .gitignore que necesita.

Editar: Puede ser obvio, pero también agrega */al ignorar git para también ignorar las subcarpetas.

+34

@ bool.dev Sí, pero ahora ha ignorado su archivo .gitignore lo que significa que no va a funcionar en las otras copias de su repositorio: P – Milosz

+3

+1 para la línea! .gitignore que habría sido realmente fácil de olvidar –

+2

Buena respuesta, pero hubiera sido mejor con una explicación de lo que está sucediendo, en lugar de confiar en los comentaristas para explicar. – jononomo

Cuestiones relacionadas