Télécharger des fichiers uniques de GitHub
Je suppose que la plupart d'entre vous, développeurs, utilisez VCS, et j'espère que certains d'entre vous l'utilisation de 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 raw; 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 comme un "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 un hébergement et un VCS gratuits pour les projets open-source?
26 réponses
Git ne prend pas en charge le téléchargement de parties du référentiel. Vous devez télécharger tout cela. Mais vous devriez être capable de le faire avec GitHub.
Lorsque vous affichez un fichier, il a un lien vers la version "raw". L'URL est construite comme ceci
https://github.com/user/repository/raw/branch/filename
En remplissant les blancs dans 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 utilisées par Git en faisant cela.
Mise à jour: j'ai remarqué que vous mentionnez que cela ne fonctionne pas pour les fichiers binaires. Vous ne devriez probablement pas utiliser de fichiers binaires dans votre dépôt Git, mais GitHub a une section de téléchargement pour chaque dépôt que vous pouvez utiliser pour télécharger des fichiers. Si vous avez besoin de plus d'un binaire, vous pouvez utiliser un .fichier zip. L'URL pour télécharger un fichier téléchargé est:
https://github.com/downloads/user/repository/filename
Notez que les URL données ci-dessus, à partir des liens sur github.com
, redirigeront vers raw.githubusercontent.com
. Vous ne devriez pas utiliser directement L'URL donnée par ceci Redirection HTTP 302 Car, selon RFC 2616 : "étant donné que la redirection peut être modifiée à l'occasion, le client doit continuer à utiliser L'URI de requête pour les requêtes futures."
- Accédez au fichier que vous souhaitez télécharger.
- Cliquez dessus pour afficher le contenu de L'interface utilisateur GitHub.
- En haut à droite, cliquez-droit sur le
Raw
bouton. - Enregistrer sous...
Vous pouvez utiliser L'API V3 pour obtenir un fichier raw 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 ligne. L'option -O
enregistre le fichier dans le répertoire courant. Vous pouvez utiliser -o filename
pour spécifier un nom de fichier différent.
Pour obtenir le jeton OAuth suivez les instructions ici: https://help.github.com/articles/creating-an-access-token-for-command-line-use
J'ai écrit ceci comme un essentiel comme Bien: https://gist.github.com/madrobby/9476733
Aller à DownGit - Entrez Votre URL de Téléchargement!
Spécialement adapté pour gros fichiers
Vous pouvez télécharger des fichiers et des répertoires individuels en zip. Vous pouvez également créer un lien de téléchargement, et même donner un nom au fichier zip. Utilisation détaillée - ici .
Github Mate rend le téléchargement de fichier unique sans effort, il suffit de cliquer sur l'icône pour télécharger, actuellement, il ne fonctionne que sur Chrome.
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 à:
https://github.com/<username>/<repo>/some_directory/file.rb
En utilisant wget, vous pouvez récupérer le fichier raw à partir de:
https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb
Rails Composer en est un excellent exemple.
Pour suivre ce que thomasfuchs a dit mais pour les 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 aussi la documentation de L'API https://developer.github.com/v3/repos/contents
Selon cet essentiel , Vous pouvez utiliser wget ou cURL:
- Cliquez sur le nom du fichier dans un dépôt GitHub.
- Cliquez sur Raw pour afficher le fichier contenu.
- Copiez L'URL dans votre navigateur.
- Dans la ligne de commande, exécutez:
wget --no-check-certificate --content-disposition https://URL-from-step3/
curl -LJO https://URL-from-step3/
Dans le cas où vous souhaitez télécharger un fichier zip à partir de github
utiliser wget
wget -O filename.zip https://github.com/downloads/user/repository/filename.zip?raw=true
Cette méthode fonctionne pour Windows car je n'ai jamais utilisé MAC, donc je ne sais 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:
- accédez à cet ensemble de données particulier que vous souhaitez télécharger et cliquez dessus.
- vous verrez le bouton " Raw " en haut à droite de l'ensemble de données.
- Appuyez sur "Alt", puis cliquez sur le bouton" Raw".
- l'ensemble du CSV Téléchargez dans votre système.
Remeber, vous devez appuyer sur Alt et clic gauche simultanément. Il suffit de cliquer sur le bouton" Raw " pour ouvrir le CSV dans le navigateur.
J'espère que cela aide.
Vous devriez simplement le faire avec l'URL raw
de votre fichier.
Par exemple pour télécharger le fichier 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'informations d'identification.
Veuillez noter le type d'url: raw.githubusercontent.com/path/to/file
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 contenuL
signifie que curl suit la redirection
La page que vous avez liée répond à la première question.
GitHub dispose également d'une installation de téléchargement pour des choses comme les versions.
Google Code n'est pas Git, à tous.
GitHub, Google Code et SourceForge, juste pour commencer, sont d'hébergement gratuit. SourceForge peut toujours faire CVS .
Cela fonctionnerait certainement. Au moins dans google Chrome. Faites un clic droit sur L'icône" Raw " - > Enregistrer le lien sous .
J'ai récemment trouvé un service appelé gitzip
et c'est aussi open source:
Site - http://kinolien.github.io/gitzip/
Repo - https://github.com/KinoLien/gitzip
Vist le site ci-dessus, entrez le repo ou répertoire URL, vous pouvez télécharger des fichiers individuels ou répertoire entier comme un fichier zip.
Si vous utilisez curl et firefox... vous pouvez utiliser l'add-oncliget qui génère un appel curl incluant tous les mécanismes d'authentification (alias cookies).
Faites donc un clic droit sur le bouton raw
cliget->"copier l'url pour le lien", puis collez-le dans un shell. Vous obtiendrez votre fichier, même si vous aviez à vous de voir.
Plutôt que de lier pour télécharger un fichier spécifique dans le repo, vous devez utiliser la fonctionnalité Releases de GitHub pour associer les données téléchargeables (telles que les binaires compilés) à la version étiquetée du code source utilisé pour générer ces données.
Https://github.com/blog/1547-release-your-software
Nous sommes ravis d'annoncer les versions, un flux de travail pour l'expédition de logiciels aux utilisateurs finaux. Les versions sont des objets de première classe avec des changelogs et des actifs binaires qui présenter un historique complet du projet au-delà des artefacts Git.
Les versionsSont accompagnées de notes de version et de liens pour 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 versions créer la balise lorsqu'elle est publiée.
Pour télécharger un fichier à partir D'un dépôt Github, utilisez la commande 'curl' avec le lien vers le fichier raw.
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 raw dans le fichier nouvellement créé.
- sur le côté droit juste en dessous de "Clone dans le bureau" il est dit "télécharger le fichier Zip"
- Télécharger Le Fichier Zip
- Extraire le fichier
Pour les utilisateurs avec GitHub Enterprise, vous devez construire L'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"}
Détails peuvent être trouvés ici
Http://artisticcheese.blogspot.com/2017/04/how-to-download-individual-files-from.html
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');
J'ai utilisé le format suivant, et je pense qu'il est important d'informer sur le chemin.
https://github.com/user/repository/raw/branch/filename
^^^ci-dessus n'est pas très complet dans mon esprit
https://github.com/<user>/<repoROOTname>/blob/master/<path>/<filename>?raw=true
Certains ont dit raw.github.com ou raw au lieu de blob, mais la 2ème ligne fonctionne pour moi et j'espère aidera les autres...
2¢
Vous pouvez essayer GitHub-files-fetcher , c'est un outil de ligne de commande qui télécharge un seul dossier ou fichier à partir d'un dépôt GitHub.
Pensez à un scénario réel: vous visitiez la page Web suivante et souhaitez télécharger le sous-répertoire async
seul.
Https://github.com/reduxjs/redux/tree/master/examples
Désolé de ne pas avoir été autorisé à poster des images.
Avec github-files-fetcher
, vous devez tout d'abord copier le url
de cette page, qui est https://github.com/reduxjs/redux/tree/master/examples/async, puis exécutez la commande suivante en ligne de commande:
fetcher --url=https://github.com/reduxjs/redux/tree/master/examples/async
Maintenant, il est possible de télécharger n'importe quel fichier ou dossier particulier dans le référentiel en utilisant cette extension google chrome:
GitZip pour github : lien: https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn
Utilisation :
- dans n'importe quelle page de repos publique GitHub.
- Il suffit de double-cliquer sur les éléments dont vous avez besoin.
- cliquez sur le bouton Télécharger en bas à droite.
- Voir les progrès tableau de bord et attendez le téléchargement du déclencheur du navigateur.
- récupère le fichier ZIP.
C'est ce qui a fonctionné pour moi tout à l'heure...
Ouvrez le fichier raw dans un onglet séparé.
Copie le tout dans votre bloc-notes dans un nouveau fichier.
Enregistrez le fichier à l'extension, il avait à l'origine
...travaillé pour la .fichier php je DL tout à l'heure.