286 votes

git : Récupérer un seul fichier d'un référentiel

Quel est le mécanisme le plus efficace (en ce qui concerne les données transférées et l'espace disque utilisé) pour obtenir le contenu d'un seul fichier à partir d'un dépôt git distant ?

Jusqu'à présent, j'ai réussi à trouver des solutions :

git clone --no-checkout --depth 1 git@github.com:foo/bar.git && cd bar && git show HEAD:path/to/file.txt

Ça semble toujours exagéré.

Qu'en est-il de l'obtention de plusieurs fichiers à partir du repo ?

179voto

Yisrael Dov Points 183

Dans la version 1.7.9.5 de git, cela semble fonctionner pour exporter un seul fichier à partir d'un site distant.

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

Cela va cat le contenu du fichier README.md .

85voto

Robert Knight Points 809

Dans le prolongement de Jakub 's réponse . git archive produit une archive tar ou zip, vous devez donc faire passer la sortie par tar pour obtenir le contenu du fichier :

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

Sauvegarde une copie de 'nom de fichier' depuis le HEAD du référentiel distant dans le répertoire courant.

El :path/to/directory est facultative. S'il est exclu, le fichier récupéré sera enregistré dans le répertoire <current working dir>/path/to/directory/filename

47voto

Jakub Narębski Points 87537

S'il y a interface internet déployé (comme gitweb, cgit, Gitorious, ginatra), vous pouvez l'utiliser pour télécharger un seul fichier (vue 'brute' ou 'simple').

Si l'autre côté l'a activé vous pouvez utiliser archive git 's ' --remote=<URL> (et éventuellement le limiter à un répertoire dans lequel le fichier réside), par exemple :

$ git archive --remote=git@github.com:foo/bar.git --prefix=path/to/ HEAD:path/to/ |  tar xvf -

8voto

Michal Stefanow Points 1223

Cela me semble être une solution : http://gitready.com/intermediate/2009/02/27/get-a-file-from-a-specific-revision.html

git show HEAD~4:index.html > local_file

4 signifie quatre révisions à partir de maintenant et ~ est un tilde comme mentionné dans le commentaire.

6voto

Steven Penny Points 18523

J'utilise ceci

$ cat ~/.wgetrc
check_certificate = off

$ wget https://raw.github.com/jquery/jquery/master/grunt.js
HTTP request sent, awaiting response... 200 OK
Length: 11339 (11K) [text/plain]
Saving to: `grunt.js'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X