Recuperar un solo archivo de un repositorio

Resuelto asked hace 15 años • 0 respuestas

¿Cuál es el mecanismo más eficiente (con respecto a los datos transferidos y el espacio en disco utilizado) para obtener el contenido de un único archivo desde un repositorio git remoto?

Hasta ahora he logrado llegar a:

git clone --no-checkout --depth 1 [email protected]:foo/bar.git && cd bar && git show HEAD:path/to/file.txt

Esto todavía parece excesivo.

¿Qué pasa con la obtención de varios archivos del repositorio?

 avatar Jul 14 '09 20:07
Aceptado

En la versión 1.7.9.5 de Git, esto parece funcionar para exportar un solo archivo desde un control remoto.

git archive --remote=ssh://host/pathto/repo.git HEAD README.md | tar xO

Esto capturará el contenido del archivo README.md.

Yisrael Dov avatar Aug 20 '2013 09:08 Yisrael Dov

Siguiendo con la respuesta de Jakub . produce un archivo tar o zip, por lo que necesita canalizar la salida a través de tar para obtener el contenido del archivo:git archive

git archive --remote=git://git.foo.com/project.git HEAD:path/to/directory filename | tar -x

Guardará una copia del 'nombre de archivo' del HEAD del repositorio remoto en el directorio actual.

La :path/to/directorypieza es opcional. Si se excluye, el archivo recuperado se guardará en<current working dir>/path/to/directory/filename

Además, si desea habilitar el uso de git archive --remoterepositorios Git alojados en git-daemon, debe habilitar la opción de configuración daemon.uploadarch. Consulte https://kernel.org/pub/software/scm/git/docs/git-daemon.html

Robert Knight avatar Mar 16 '2011 11:03 Robert Knight

Si hay una interfaz web implementada (como gitweb, cgit, Gitorious, ginatra), puede usarla para descargar un solo archivo (vista "sin formato" o "sin formato").

Si el otro lado lo habilitó , puede usar la opción '' de git archive--remote=<URL> (y posiblemente limitarla a un directorio en el que reside el archivo determinado), por ejemplo:

$ git archive [email protected]:foo/bar.git --prefix=path/to/ HEAD:path/to/ |  tar xvf -
Jakub Narębski avatar Jul 14 '2009 15:07 Jakub Narębski

En general no, pero si estás usando Github:

Para mí wget, la URL sin formato resultó ser la mejor y más sencilla forma de descargar un archivo en particular.

Abra el archivo en el navegador y haga clic en el botón "Sin formato". Ahora actualice su navegador, copie la URL y haga un wgeto curlen ella.

ejemplo de wget:

wget 'https://github.abc.abc.com/raw/abc/folder1/master/folder2/myfile.py?token=DDDDnkl92Kw8829jhXXoxBaVJIYW-h7zks5Vy9I-wA%3D%3D' -O myfile.py

Ejemplo de rizo:

curl 'https://example.com/raw.txt' > savedFile.txt
Ankur Agarwal avatar Aug 05 '2015 23:08 Ankur Agarwal

Para exportar un solo archivo desde un control remoto:

git archive --remote=ssh://host/pathto/repo.git HEAD README.md | tar -x

Esto descargará el archivo README.mda su directorio actual.

Si desea exportar el contenido del archivo a STDOUT:

git archive --remote=ssh://host/pathto/repo.git HEAD README.md | tar -xO

Puede proporcionar varias rutas al final del comando.

Kousha avatar Sep 10 '2015 21:09 Kousha