ver tipos tag qué modificados log existen etiquetas crear archivos git

git - tipos - ¿Es posible hacer un pago escaso sin consultar primero todo el repositorio?



qué tipos de etiquetas existen en git (8)

El clon de Git tiene una opción ( --no-checkout o -n ) que hace lo que quieres.

En tu lista de comandos, solo cambia:

git clone <path>

A esto:

git clone --no-checkout <path>

A continuación, puede utilizar el pago escaso como se indica en la pregunta.

Estoy trabajando con un repositorio con una gran cantidad de archivos que demora horas en finalizar la compra. Estoy estudiando la posibilidad de si Git funcionaría bien con este tipo de repositorio ahora que admite revisiones dispersas, pero cada ejemplo que puedo encontrar hace lo siguiente:

git clone <path> git config core.sparsecheckout true echo <dir> > .git/info/sparse-checkout git read-tree -m -u HEAD

El problema con esta secuencia de comandos es que el clon original también realiza un pago. Si agrega -n al comando de clonación original, entonces el comando read-tree da como resultado el siguiente error:

error: salida escasa no deja entrada en el directorio de trabajo

¿Cómo se puede hacer el pago disperso sin verificar primero todos los archivos?


Encontré la respuesta que estaba buscando en el one-liner publicado anteriormente por pavek (¡gracias!), Así que quería proporcionar una respuesta completa en una sola respuesta que funciona en Linux (GIT 1.7.1):

1--> mkdir myrepo 2--> cd myrepo 3--> git init 4--> git config core.sparseCheckout true 5--> echo ''path/to/subdir/'' > .git/info/sparse-checkout 6--> git remote add -f origin ssh://... 7--> git pull origin master

Cambié el orden de los comandos un poco, pero eso no parece tener ningún impacto. La clave es la presencia de la barra al final "/" al final de la ruta en el paso 5.


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

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

Aquí esta lo que hice:

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

Ejecute git config core.sparsecheckout true

Creado .git/info/sparse-checkout con el siguiente contenido

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

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

Lo más importante para hacerlo funcionar fue agregar /* después del nombre de la carpeta.

Tengo git 1.9


Prueba esto:

mkdir myrepo cd myrepo git init git config core.sparseCheckout true git remote add -f origin git://... echo "path/within_repo/to/desired_subdir/*" > .git/info/sparse-checkout git checkout [branchname] # ex: master

Ahora verá que tiene un proceso de "eliminación" con solo los archivos de la ruta / within_repo / to / desired_subdir presentes (y en esa ruta).

Tenga en cuenta que en la línea de comandos de Windows no debe citar la ruta, es decir, debe cambiar el sexto comando con este:

echo path/within_repo/to/desired_subdir/* > .git/info/sparse-checkout

si no lo hace obtendrá las comillas en el archivo de salida dispersa, y no funcionará


Sí, escaso checkout descarga todo para descargar una carpeta de git. Ninguno de los métodos anteriores funciona para mí. Para descargar solo una muestra de https://github.com/gearvrf/GearVRf-Demos aquí está lo que hice ...

  1. Para que el usuario de Windows descargue e instale SlikSvn_x84, agregue este "C: / Archivos de programa (x86) / SlikSvn / bin" a la variable de entorno de Ruta. el usuario de mac usa el cliente svn alternativo.

  2. Use la línea de comando: svn export https://github.com/foobar/Test.git/trunk/foo

Observe el formato de URL:

La URL base es https://github.com/ / trunk agregado al final

Ejemplo: svn export https://github.com/gearvrf/GearVRf-Demos.git/trunk/gvr-renderableview

Espero que esto ayude a alguien. ref: https://.com/a/18324458/5710872


Soy nuevo en git, pero parece que si hago git checkout para cada directorio, entonces funciona. Además, el archivo de salida dispersa debe tener una barra inclinada detrás de cada directorio como se indica. Alguien más experiencia por favor confirme que esto funcionará.

Curiosamente, si realiza una compra en un directorio que no está en el archivo de salida dispersa, parece que no importa. No se muestran en estado de git y git árbol de lectura -m -u HEAD no hace que se elimine. git reset --hard no hace que el directorio sea eliminado tampoco. ¿Alguien más con experiencia se preocupa por comentar qué cree git de los directorios que se prestan pero que no están en el archivo de salida disperso?


Tenía un caso de uso similar, excepto que quería pagar solo la confirmación de una etiqueta y podar los directorios. Usar --depth 1 hace realmente escaso y realmente puede acelerar las cosas.

mkdir myrepo cd myrepo git init git config core.sparseCheckout true git remote add origin <url> # Note: no -f option echo "path/within_repo/to/subdir/" > .git/info/sparse-checkout git fetch --depth 1 origin tag <tagname> git checkout <tagname>


git 2.9 (junio de 2016) generalizará la --no-checkout para git worktree add (el comando que permite trabajar con múltiples árboles de trabajo para un repositorio )

Ver commit ef2a0ac (29 de marzo de 2016) por Ray Zhang ( OneRaynyDay ) .
Ayudado por: Eric Sunshine ( sunshineco ) , y Junio ​​C Hamano ( gitster ) .
(Fusionado por Junio ​​C Hamano - gitster - in commit 0d8683c , 13 de abril de 2016)

La página man de git worktree ahora incluye:

--[no-]checkout:

De forma predeterminada, add --no-checkout out a <branch> , sin embargo, --no-checkout se puede utilizar para suprimir el proceso de pago para realizar personalizaciones, como la configuración de sparse-checkout .