web-dev-qa-db-fra.com

Téléchargez des fichiers spécifiques à partir de github en ligne de commande et ne clonez pas l'intégralité du référentiel.

Comment télécharger seulement 2 fichiers de github en ligne de commande?
Quelque chose dans les lignes de:

git fetch git://github.com/username/Project.git/file1
git fetch git://github.com/username/Project.git/file2
14
anjanesh

Si vous allez à la page et affichez les liens fournis par "raw" (en haut à gauche, lors de la visualisation du fichier). Vous verrez que vous pouvez y accéder par:

https://github.com/username/repository/raw/$changeset_hash/path/to/file

Au lieu de $changeset_hash, vous pouvez également fournir une branche (principale, par exemple) ou une balise.

Vous pouvez récupérer le fichier brut en utilisant quelque chose comme wget.

L'accès à un seul fichier directement depuis un référentiel .git n'est pas possible (autant que je sache), en raison de la manière dont les données sont stockées.

edit: Lorsque vous souhaitez accéder à un fichier à partir d'un référentiel privé, vous devez d'abord créer un jeton d'accès avec les autorisations appropriées dans les paramètres de votre compte. Au lieu d'appeler l'URL ci-dessus, vous pouvez ensuite utiliser l'API github pour accéder au contenu d'un fichier . Veillez à utiliser l'en-tête Accept pour types de média personnalisés pour obtenir les données brutes. Cela pourrait ressembler à ceci:

curl \
  -H 'Authorization: token $YOUR_TOKEN' \
  -H 'Accept: application/vnd.github.v3.raw' \
  -O \
  -L 'https://api.github.com/repos/:owner/:repo/contents/:path'

Le -O enregistre le contenu dans un fichier local portant le même nom que le nom du fichier distant. Pour une utilisation plus facile, vous pouvez l’envelopper dans un script. @Chris_Withers a suggéré une édition avec un extrait de code en python de Nice qui a malheureusement été rejetée car elle ne permettait pas de changer la réponse.

23
dbrumann

Copiez le lien brut du fichier spécifique depuis GitHub (au fur et à mesure que vous ouvrez le fichier dans Github, vous pouvez voir l'option permettant d'ouvrir le fichier en mode brut. Ouvrez-le en mode brut et copiez l'adresse URL)

Maintenant, utilisez la commande curl en ligne de commande pour télécharger le fichier.

curl -o filename raw-link-to-file
15
user1115547
git checkout  

Par exemple:

git checkout master~2 file1

(git checkout --help pour l'aide)

1
vpatil

Vous pouvez essayer github-files-fetcher , il s’agit d’un outil de ligne de commande permettant de télécharger un seul dossier ou fichier à partir d’un dépôt GitHub.

Dans l'exemple ci-dessus, vous pouvez utiliser la commande suivante pour extraire les deux fichiers spécifiques de github:

fetcher --url="git://github.com/username/Project.git/file1" 
fetcher --url="git://github.com/username/Project.git/file2" 

Imaginez un scénario plus réaliste: vous visitiez la page de page Web suivante et souhaitez télécharger uniquement le sous-répertoire async.

https://github.com/reduxjs/redux/tree/master/examples

désolé de ne pas être autorisé à poster des images.

Avec le github-files-fetcher, vous devez d’abord copier la url de cette page, qui est https://github.com/reduxjs/redux/tree/master/examples/async , puis exécuter la commande ci-dessous en ligne de commande:

fetcher --url=https://github.com/reduxjs/redux/tree/master/examples/async

0
Gyumeijie