Ich nehme an, die meisten von Ihnen, die Entwickler, verwenden alle VCS , und ich hoffe, einige von Ihnen verwenden Git. Haben Sie einen Tipp oder einen Trick, wie Sie eine Download-URL für eine einzelne Datei in einem Repository erhalten?
Ich möchte nicht, dass die URL zum Anzeigen der Rohdatei verwendet wird. Im Falle von Binärdateien ist es umsonst.
http://support.github.com/discussions/feature-requests/41-download-single-file
Kann man GitHub überhaupt als "Download-Server" nutzen?
Wenn wir uns entscheiden, zu Google Code zu wechseln, wird die hier erwähnte Funktionalität hier angezeigt?
Oder gibt es ein kostenloses Hosting und VCS für Open Source-Projekte?
Git unterstützt das Herunterladen von Teilen des Repositorys nicht. Sie müssen alles herunterladen. Dies sollte jedoch mit GitHub möglich sein.
Wenn Sie eine Datei anzeigen, hat sie einen Link zur "Rohversion". Die URL ist so aufgebaut
https://github.com/user/repository/raw/branch/filename
Durch das Ausfüllen der Leerzeichen in der URL können Sie Wget oder cURL (mit der -L
-Option, siehe unten) oder was auch immer zum Herunterladen einer einzelnen Datei verwenden. Auch hier erhalten Sie keine der von Git verwendeten Versionskontrollfunktionen von Nice.
Update: Ich habe bemerkt, dass Sie erwähnen, dass dies bei Binärdateien nicht funktioniert. Sie sollten wahrscheinlich keine Binärdateien in Ihrem Git-Repository verwenden, aber GitHub hat einen Download-Bereich für jedes Repository, das Sie zum Hochladen von Dateien verwenden können. Wenn Sie mehr als eine Binärdatei benötigen, können Sie eine ZIP-Datei verwenden. Die URL zum Herunterladen einer hochgeladenen Datei lautet:
https://github.com/downloads/user/repository/filename
Beachten Sie, dass die oben angegebenen URLs von den Links auf github.com
zu raw.githubusercontent.com
weitergeleitet werden. Sie sollten die durch diese HTTP-302-Weiterleitung angegebene URL nicht direkt verwenden, da per RFC 2616 : "Da die Weiterleitung gelegentlich geändert wird, SOLLTE der Client den Request-URI für zukünftige Anforderungen weiterhin verwenden."
Raw
-Taste.Sie können die V3-API verwenden, um eine Rohdatei wie diese zu erhalten (Sie benötigen ein OAuth Token):
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path
All dies muss in einer Zeile erfolgen. Das -O
Option speichert die Datei im aktuellen Verzeichnis. Sie können -o filename
, um einen anderen Dateinamen anzugeben.
Um das OAuth zu erhalten, folgen Sie den Anweisungen hier: https://help.github.com/articles/creating-an-access-token-for-command-line-use
Ich habe dies auch als Gist geschrieben: https://Gist.github.com/madrobby/94767
GitHub Mate Ermöglicht das Herunterladen einzelner Dateien. Klicken Sie einfach auf das Symbol, um es herunterzuladen. Derzeit funktioniert es nur in Chrome.
Gemäß this Gist können Sie wget oder cURL verwenden:
wget --no-check-certificate --content-disposition https://URL-from-step3/
curl -LJO https://URL-from-step3/
Dies ist jetzt in GitHub für jede Datei möglich. Sie müssen Ihre Dateien für raw.github.com übersetzen. Wenn sich Ihre Datei beispielsweise in Ihrem Repository befindet:
https://github.com/<username>/<repo>/some_directory/file.rb
Mit wget können Sie die RAW-Datei von:
https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb
Rails Composer ist ein hervorragendes Beispiel dafür.
Um zu verfolgen, was thomasfuchs gesagt hat, aber für GitHub Enterprise-Benutzer, können Sie Folgendes verwenden.
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://your_domain/api/v3/repos/owner/repo/contents/path
Hier ist auch die API-Dokumentation https://developer.github.com/v3/repos/contents
Sie können curl
folgendermaßen verwenden:
curl -OL https://raw.githubusercontent.com/<username>/<repo-name>/<branch-name>/path/to/file
O
bedeutet, dass curl den Inhalt herunterlädtL
bedeutet, dass curl der Umleitung folgt
Wenn Sie eine ZIP-Datei von github
mit wget
herunterladen
wget -O filename.Zip https://github.com/downloads/user/repository/filename.zip?raw=true
weitere Informationen finden Sie auf dieser website
Es gibt eine Chrome-Erweiterung namens Enhanced Github
Es wird eine Download-Schaltfläche direkt rechts von jeder Datei hinzugefügt.
Sie sollten dies nur mit der raw
-URL Ihrer Datei tun.
Zum Herunterladen des README von AFNetworking:
curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md
Da es sich um ein öffentliches Repo handelt, benötigen Sie keine Anmeldeinformationen. Bitte beachten Sie die Art der URL: raw.githubusercontent.com/path/to/file
Diese Methode funktioniert für Windows, da ich noch nie MAC verwendet habe. Daher weiß ich nicht, welche alternativen Tasten in MAC für die Tasten verwendet werden, die ich unten erwähnen möchte.
Sprechen wir über die CSV-Dateien. WENN Sie die CSV-Datei herunterladen möchten:
Denken Sie daran, dass Sie gleichzeitig Alt und Linksklick drücken müssen. Durch Klicken auf die Schaltfläche "Raw" wird der CSV im Browser geöffnet.
Ich hoffe das hilft.
Das würde definitiv funktionieren. Zumindest in Chrome. Klicken Sie mit der rechten Maustaste auf das Symbol "Raw" -> Verknüpfung speichern unter .
Anstatt einen Link zum Herunterladen einer bestimmten Datei innerhalb des Repos zu erstellen, sollten Sie die Releases - Funktion von GitHub verwenden, um herunterladbare Daten (z. B. kompilierte Binärdateien) mit der gekennzeichneten Version des Quellcodes zu verknüpfen, der zum Generieren dieser Daten verwendet wird.
https://github.com/blog/1547-release-your-software
Wir freuen uns, Releases, einen Workflow für den Versand von Software an Endbenutzer, bekannt zu geben. Releases sind erstklassige Objekte mit Änderungsprotokollen und binären Assets, die einen vollständigen Projektverlauf über Git-Artefakte hinaus darstellen.
Die Releases werden von Release-Informationen und Links zum Herunterladen der Software oder des Quellcodes begleitet.
Entsprechend den Konventionen vieler Git-Projekte sind Releases an Git-Tags gebunden. Sie können ein vorhandenes Tag verwenden oder lassen Releases das Tag erstellen, wenn es veröffentlicht wird.
Ich habe kürzlich einen Dienst namens gitzip
gefunden, der ebenfalls Open Source ist:
site - http://kinolien.github.io/gitzip/
repo - https://github.com/KinoLien/gitzip
Besuchen Sie die obige Site, geben Sie die Repo- oder Verzeichnis-URL ein, und Sie können einzelne Dateien oder ganze Verzeichnisse als Zip-Datei herunterladen.
Die von Ihnen verlinkte Seite beantwortet die erste Frage.
GitHub hat auch eine Download-Funktion für Veröffentlichungen.
Google Code hat überhaupt keine Git .
GitHub, Google Code und SourceForge sind nur ein kostenloses Hosting. SourceForge macht möglicherweise noch CVS .
Jetzt können Sie mit dieser Google Chrome-Erweiterung eine beliebige Datei oder einen bestimmten Ordner im Repository herunterladen:
GitZip für github:link: https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn
Um eine Datei von einem Github-Repo herunterzuladen, verwenden Sie den Befehl 'curl' mit dem Link zur Rohdatei.
curl https://raw.githubusercontent.com/user/repo/filename --output filename
Fügen Sie die Option --output gefolgt vom neuen Dateinamen hinzu, um die Rohdatei in die neu erstellte Datei herunterzuladen.
Wenn Sie curl und firefox verwenden, können Sie das cliget add-on verwenden, das einen Curl-Aufruf erzeugt, der alle Authentifizierungsmechanismen (auch Cookies) enthält.
Klicken Sie mit der rechten Maustaste auf die Schaltfläche raw
cliget -> "URL für Link kopieren" und fügen Sie diese in eine Shell ein. Sie erhalten Ihre Datei auch dann, wenn Sie sich anmelden müssen, um sie zu sehen.
Sie können versuchen, github-files-fetcher , ein Befehlszeilentool, das einen einzelnen Ordner oder eine einzelne Datei von einem GitHub-Repo herunterlädt.
Stellen Sie sich ein reales Szenario vor: Sie haben die folgende Webseite besucht und möchten das async
-Unterverzeichnis allein herunterladen.
https://github.com/reduxjs/redux/tree/master/examples
entschuldigung, dass ich keine Bilder posten darf.
Mit The github-files-fetcher
sollten Sie zuerst die url
dieser Seite kopieren. Dies ist https://github.com/reduxjs/redux/tree/master/examples/async und dann den folgenden Befehl in der Befehlszeile ausführen:
fetcher --url=https://github.com/reduxjs/redux/tree/master/examples/async
Ich habe das folgende Format verwendet, und es ist mir wichtig, Informationen über den Pfad zu erhalten.
https://github.com/user/repository/raw/branch/filename
^^^ das oben Genannte ist meiner Meinung nach nicht sehr vollständig
https://github.com/<user>/<repoROOTname>/blob/master/<path>/<filename>?raw=true
einige sagten raw.github.com oder raw statt Blob, aber die 2. Zeile funktioniert für mich und ich hoffe, dass ich anderen helfen kann ...
2 ¢
Für Benutzer mit GitHub Enterprise müssen Sie die URL nach folgendem Schema erstellen
Invoke-WebRequest http://github.mycompany.com/api/v3/repos/my-org/my-repo/contents/myfiles/file.txt -Headers @{"Authorization"="token 8d795936d2c1b2806587719b9b6456bd16549ad8"}
Details finden Sie hier
http://artisticcheese.blogspot.com/2017/04/wie-nach-download-individuelle-files-von.html
Oder probiere es aus
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');