Recuperar un solo archivo de un repositorio
¿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?
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
.
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/directory
pieza 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 --remote
repositorios 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
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 -
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 wget
o curl
en 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
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.md
a 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.