2012-03-05 14 views
7

Según this thread, se supone que se debe excluir en sparse-checkout feature de Git. ¿Lo es?Salida escasa de Git con exclusión

Supongamos que tengo la siguiente estructura:

papers/ 
papers/... 
presentations/ 
presentations/heavy_presentation 
presentations/... 

Ahora quiero excluir presentations/heavy_presentation de la caja, dejando el resto en la comprobación. No he logrado ejecutar esto. ¿Cuál es la sintaxis correcta para esto?

Respuesta

4

lo que habría esperado algo así como la continuación de trabajar:

/* 
!presentations/heavy_presentation 

Pero no es así. Y probé muchas otras combinaciones. Creo que el excluir no se aplique correctamente y hay bichos alrededor de él (todavía)

algo como:

presentations/* 
!presentations/heavy_presentation 

hace trabajo sin embargo y obtendrá la carpeta presentaciones sin la carpeta heavy_presentation.

Por lo tanto, la solución consistiría en incluir todo lo demás explícitamente.

+0

Gracias, confirmado.He editado tu publicación para agregar otro ejemplo que no funcionaba. – krlmlr

3

Tuve el mismo problema. Lo arreglé con algo como:

!presentations/heavy_presentation 
presentations/* 

Cómo entiendo que funciona: Se lee la regla de archivos por regla. Si se incluye algo, incluye todas las rutas que contienen esa palabra, y ya no cambia su estado hasta el final de la salida dispersa. Si agrega una regla de exclusión antes de incluir, en mi opinión, eliminará los archivos primero y luego marcará todos como incluidos.

No estoy del todo seguro, esto es lo que he supuesto en base a mi experiencia y ha estado trabajando para mí. Espero que ayude a alguien.

3

Tristemente ninguno de los anteriores funcionó para mí, así que pasé mucho tiempo probando diferentes combinaciones de archivos sparse-checkout.

En mi caso, quería omitir carpetas con las configuraciones de IntelliJ IDEA.

Esto es lo que hice:


Run git clone https://github.com/myaccount/myrepo.git --no-checkout

Run git config core.sparsecheckout true

Creado .git\info\sparse-checkout con contenido siguiente

!.idea/* 
!.idea_modules/* 
/* 

Run 'git checkout -' para obtener todos los archivos.


cosa crítica para hacer funcionar fue agregar /* después del nombre de la carpeta.

Tengo git 1.9

Cuestiones relacionadas