web-dev-qa-db-fra.com

Télécharger des fichiers uniques à partir de GitHub

Je suppose que la plupart d’entre vous, développeurs, utilisez n’importe quel VCS , et j’espère que certains d’entre vous utilisent Git. Avez-vous un conseil ou une astuce pour obtenir une URL de téléchargement pour un seul fichier dans un référentiel?

Je ne veux pas l'URL pour afficher le fichier brut; dans le cas de binaires, c'est pour rien.

http://support.github.com/discussions/feature-requests/41-download-single-file

Est-il même possible d'utiliser GitHub en tant que "serveur de téléchargement"?

Si nous décidons de passer à Google Code, la fonctionnalité mentionnée est-elle présentée ici?

Ou existe-t-il des systèmes d’hébergement et de VCS gratuits pour les projets open-source?

471
Radek Simko

Git ne prend pas en charge le téléchargement de parties du référentiel. Vous devez tout télécharger. Mais vous devriez pouvoir faire cela avec GitHub.

Lorsque vous visualisez un fichier, il contient un lien vers la version "brute". Le URL est construit comme si

https://github.com/user/repository/raw/branch/filename

En remplissant les blancs de l'URL, vous pouvez utiliser Wget ou cURL (avec l'option -L, voir ci-dessous) ou autre pour télécharger un seul fichier. Encore une fois, vous n'obtiendrez aucune des fonctionnalités de contrôle de version de Nice utilisées par Git.

Mise à jour: j'ai remarqué que vous avez mentionné que cela ne fonctionnait pas pour les fichiers binaires. Vous ne devriez probablement pas utiliser de fichiers binaires dans votre référentiel Git, mais GitHub a une section de téléchargement pour chaque référentiel que vous pouvez utiliser pour télécharger des fichiers. Si vous avez besoin de plus d'un fichier binaire, vous pouvez utiliser un fichier .Zip . L'URL pour télécharger un fichier téléchargé est la suivante:

https://github.com/downloads/user/repository/filename

Notez que les URL indiquées ci-dessus, à partir des liens sur github.com, seront redirigées vers raw.githubusercontent.com. Vous ne devez pas utiliser directement l'URL fournie par cette redirection HTTP 302 car, pour RFC 2616 : "La redirection pouvant être modifiée à l'occasion, le client DEVRAIT continuer à utiliser le Request-URI pour les futures requêtes."

473
jonescb
  1. Accédez au fichier que vous souhaitez télécharger.
  2. Cliquez dessus pour afficher le contenu de l'interface utilisateur de GitHub.
  3. En haut à droite, clic droit le bouton Raw.
  4. Enregistrer sous...
441
bearfriend

Vous pouvez utiliser l'API V3 pour obtenir un fichier brut comme celui-ci (vous aurez besoin d'un jeton OAuth):

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

Tout cela doit aller sur une seule ligne. L'option -O enregistre le fichier dans le répertoire en cours. Vous pouvez utiliser -o filename pour spécifier un nom de fichier différent.

Pour obtenir le jeton OAuth, suivez les instructions suivantes: https://help.github.com/articles/creating-an-access-token-for-command-line-use

J'ai aussi écrit ceci en tant que Gist: https://Gist.github.com/madrobby/9476733

33
thomasfuchs

GitHub Mate permet de télécharger un fichier unique sans effort, il suffit de cliquer sur l’icône pour le télécharger, pour le moment, cela ne fonctionne que sur Chrome.

GitHub Mate Download

14
Cam Song

Selon ce Gist , vous pouvez utiliser wget ou cURL: 

  1. Cliquez sur le nom du fichier dans un dépôt GitHub.
  2. Cliquez sur Raw pour afficher le fichier Content.
  3. Copiez l'URL dans votre navigateur.
  4. Dans la ligne de commande, exécutez soit:
    • wget --no-check-certificate --content-disposition https://URL-from-step3/
    • curl -LJO https://URL-from-step3/
13
Ted Cox

Ceci est maintenant possible dans GitHub pour n'importe quel fichier. Vous devez traduire vos fichiers pour raw.github.com. Par exemple, si votre fichier se trouve dans votre référentiel à l’adresse:

https://github.com/<username>/<repo>/some_directory/file.rb

En utilisant wget, vous pouvez récupérer le fichier brut à partir de:

https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb

Rails Composer est un excellent exemple de cela.

11
Joe Leo

Pour revenir à ce que thomasfuchs a dit, mais plutôt aux utilisateurs de GitHub Enterprise, voici ce que vous pouvez utiliser.

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

Voici également la documentation de l'API https://developer.github.com/v3/repos/contents

9
Drew Michel

Vous pouvez utiliser curl de cette façon:

curl -OL https://raw.githubusercontent.com/<username>/<repo-name>/<branch-name>/path/to/file

O signifie que curl télécharge le contenu
L signifie que curl suit la redirection

8
Mark

Si vous souhaitez télécharger un fichier Zip depuis github en utilisant wget

wget -O filename.Zip https://github.com/downloads/user/repository/filename.zip?raw=true

voir ce site web pour plus de détails

7
DJJ

Il existe une extension chrome appelée Enhanced Github

Il ajoutera un bouton de téléchargement directement à la droite de chaque fichier.

 enter image description here

Vous devriez simplement le faire avec l'URL raw de votre fichier.

Par exemple, pour télécharger le README d’AFNetworking:

curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md 

Comme il s’agit d’un repo public, vous n’avez pas besoin d’identifiants ..___ Veuillez noter le type d’URL: raw.githubusercontent.com/path/to/file

4
Kevin Delord

Cette méthode fonctionne pour Windows car je n’ai jamais utilisé MAC, je ne sais donc pas quelles sont les clés alternatives dans MAC pour les clés que je vais mentionner ci-dessous. 

Parlons des fichiers CSV. SI vous voulez télécharger le fichier CSV:

  1. Accédez à l'ensemble de données que vous souhaitez télécharger et cliquez dessus.
  2. Vous verrez le bouton "Raw" en haut à droite du jeu de données.
  3. Appuyez sur "Alt" puis cliquez gauche sur le bouton "Raw".
  4. L'intégralité du fichier CSV sera téléchargée sur votre système.

Rappelez-vous, vous devez appuyer sur Alt et clic gauche simultanément. Il suffit de cliquer sur le bouton "Raw" pour ouvrir le fichier CSV dans le navigateur.

J'espère que ça aide.

4
saadi123

Cela fonctionnerait certainement. Au moins dans Chrome. Faites un clic droit sur l'icône "Raw" -> Enregistrer le lien sous .

3
Ankish Jain

Plutôt que de créer un lien pour télécharger un fichier spécifique dans le référentiel, vous devez utiliser la fonction Releases de GitHub pour associer des données téléchargeables (telles que des fichiers binaires compilés) à la version balisée du code source utilisée pour générer ces données. 

https://github.com/blog/1547-release-your-software

Nous sommes ravis d'annoncer le lancement de Releases, un workflow permettant d'envoyer des logiciels aux utilisateurs finaux. Les versions sont des objets de première classe avec des journaux des modifications et des actifs binaires qui présentent un historique complet du projet au-delà des artefacts Git.

Les versions sont accompagnées de notes de publication et de liens permettant de télécharger le logiciel ou le code source.

Suivant les conventions de nombreux projets Git, les versions sont liées aux balises Git. Vous pouvez utiliser une balise existante ou laisser les éditions créer la balise lors de sa publication.

 enter image description here

2
pkamb

J'ai récemment trouvé un service appelé gitzip et son source ouverte:

site - http://kinolien.github.io/gitzip/

repo - https://github.com/KinoLien/gitzip

Accédez au site ci-dessus, entrez l’URL du référentiel ou du répertoire. Vous pouvez télécharger des fichiers individuels ou un répertoire complet sous forme de fichier Zip.

2
avi
  1. La page à laquelle vous avez accédé répond à la première question.

  2. GitHub a également une fonction de téléchargement pour des choses comme les versions.

  3. Google Code n'a pas Git du tout.

  4. GitHub, Google Code et SourceForge , juste pour commencer, sont des hébergements gratuits. SourceForge peut toujours faire CVS .

2
bmargulies

Il est maintenant possible de télécharger n’importe quel fichier ou dossier dans le référentiel en utilisant cette extension Google Chrome:

GitZip pour github:link: https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn

Utilisation:

  1. Dans n'importe quelle page de repos public GitHub.
  2. Double-cliquez simplement sur les éléments dont vous avez besoin.
  3. Cliquez sur le bouton de téléchargement en bas à droite.
  4. Consultez le tableau de bord de la progression et attendez le téléchargement du déclencheur de navigateur.
  5. Obtenez le fichier Zip.

 enter image description here

 enter image description here

1
Natesh bhat

Pour télécharger un fichier depuis un dépôt Github, utilisez la commande 'curl' avec le lien vers le fichier brut. 

curl https://raw.githubusercontent.com/user/repo/filename --output filename

Ajoutez l'option --output suivie du nouveau nom de fichier pour télécharger le fichier brut dans le fichier nouvellement créé.

1
George

Je pense que la nouvelle structure url est raw.giturl par exemple:

fichier git

brut

1
fsmart

Si vous utilisez par exemple curl et firefox ... vous pouvez utiliser le module complémentaire cliget qui génère un appel curl incluant tous les mécanismes d'authentification (ou cookies). 

Alors faites un clic droit sur le bouton raw du bouton -> "Copier l’URL du lien" puis collez-le dans un shell. Vous obtiendrez votre fichier même si vous deviez vous connecter pour le consulter.

1
estani

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.

Imaginez un scénario réel: vous visitiez la page Web suivante et souhaitiez 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

J'ai utilisé le format suivant et j'estime qu'il est important d'informer sur le chemin.

https://github.com/user/repository/raw/branch/filename

^^^ ce qui précède n'est pas très complet dans mon esprit

https://github.com/<user>/<repoROOTname>/blob/master/<path>/<filename>?raw=true

certains disent raw.github.com ou raw au lieu de blob, mais la 2ème ligne fonctionne pour moi et j'espère que cela aidera les autres ...

2 ¢

0
rezwits

Pour les utilisateurs de GitHub Enterprise, vous devez créer une URL dans le schéma suivant. 

Invoke-WebRequest http://github.mycompany.com/api/v3/repos/my-org/my-repo/contents/myfiles/file.txt -Headers @{"Authorization"="token 8d795936d2c1b2806587719b9b6456bd16549ad8"}

Les détails peuvent être trouvés ici

http://artisticcheese.blogspot.com/2017/04/how-to-download-individual-files-from.html

0
Gregory Suvalian
  1. Télécharger le fichier Zip
  2. Extraire le fichier
  3. Extract the file
0
Evan Gertis

Ou essayez ceci 

const https = require('https');
const fs = require('fs');
const DOMAIN = 'raw.githubusercontent.com';

function writeFile(data, fileName) {
  fs.appendFile(fileName, data.toString(), err => {
    if (err) {
      console.log('error in writing file', err);
    }
  });
}

function EOF(data) {
  console.log('EOF');
}

function getFileName(pathToFile) {
  var result = pathToFile.split('/');
  var splitLength = result.length;
  return result[splitLength - 1];
}
function getFile(branchName, username, repoName, ...pathToFile) {
  pathToFile.forEach(item => {
    const path = `/${username}/${repoName}/${branchName}/${item}`;
    const URL = `${DOMAIN}${path}`;
    const options = {
      hostname: DOMAIN,
      path: path
    };
    var fileName = getFileName(item);

    https
      .get(options, function(res) {
        console.log(res.statusCode);
        /* if file not found */
        if (res.statusCode === 404) {
          console.log('FILE NOT FOUND');
        } else {
          /* if file found */
          res.on('data', data => writeFile(data, fileName));
          res.on('end', data => EOF(data));
        }
      })
      .on('error', function(res) {
        console.log('error in reading URL');
      });
  });
}
getFile('master', 'bansalAyush', 'InstagramClone', '.babelrc', 'README.md');
0
Ayush Bansal