Pregunta

Tomando prestado de algunos tutoriales, puedo hacer un pago escaso de una carpeta en particular en un repositorio GIT.

mkdir git-completion && cd git-completion
git init
git remote add –f origin https://github.com/git/git.git
git config core.sparsecheckout true
echo contrib/completion/ >> .git/info/sparse-checkout
git pull origin master

Por ejemplo, digamos que estoy después del git-completion.bash, git-completion.tcsh, etc. scripts que están en el contrib/completion carpeta de este repositorio.

La verificación escasa anterior me devuelve la carpeta deseada, pero parece tener una estructura de archivo anidado:

git-completion/contrib/completion/git-completion.bash

¿Es posible extraer los archivos en el directorio principal así?

git-completion/git-completion.bash
¿Fue útil?

Solución

Puedes hacer esto con git show:

git show <revision>:path/to/file.txt > different/path/to/otherfile.txt

En su caso específico:

git show HEAD:git-completion/contrib/completion/git-completion.bash > git-completion/git-completion.bash

Repita para cada archivo que desea pagar. Aunque, en realidad, la razón de los subdirectorios, creo, es que cuando estos se agrupan en un git lanzamiento, se ponen en el contrib/completion Subdirectorio, por lo que podría ser mejor acostumbrarse al diseño del repositorio ...

Otros consejos

Dependiendo de lo que esté tratando de lograr, tiene dos opciones. Si aún desea poder rastrear los cambios en los archivos, entonces cometería enlaces simbólicos. Si no te importan los cambios locales, entonces usaría git archive.

Cometer enlaces simbólicos

Puede cometer enlaces simbólicos a los archivos que le importan, use el pago de repuesto para obtenerlos también.

ln -s contrib/completion/git-completion.bash git-completion.bash
git add git-completion.bash

Esto le permitirá editar los archivos y cometer cambios aún.

Archivo de git

Esto simplemente extraerá el contenido que está buscando. Los cambios no se rastrearán en el repositorio.

# generic
git archive <revision>:<path> | tar -xf -

#specific to your example
git clone --bare https://github.com/git/git.git ~/git-completion-bare
mkdir git-completion && cd git-completion
git archive --remote ~/git-completion-bare master:contrib/completion/ | tar -xf -

Editar: parece github no soporta git archive --remote. Todavía se incluye a continuación en caso de que alguien esté utilizando un servicio de alojamiento diferente que lo permita.

Git Archive con -remoto

Usando Git Archive, incluso puede descargar los cambios directamente de un repositorio remoto sin clonar primero el repositorio. La desventaja es que no puede rastrear los cambios locales con Git.

# General form
git archive --remote <url> <revision>:<path> | tar -xf -
# your example 
git archive --remote https://github.com/git/git.git master:contrib/completion/ | tar -xf -

Ahora tendrá los archivos en el directorio actual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top