webentwicklung-frage-antwort-db.com.de

Wie kann ich eine einzelne Rohdatei von einem privaten Github-Repo über die Befehlszeile herunterladen?

Ich möchte auf dem CI-Server eine Konfigurationsdatei abrufen, die wir auf Github verwalten, damit sie von vielen Jobs gemeinsam genutzt werden kann. Ich versuche, diese Datei über curl zu bekommen, aber beide Ansätze schlagen fehl (ich bekomme eine 404):

# As advised by the oAuth docs
curl -H 'Authorization: token the_token' -L -o setup.sh https://raw.github.com/org/repo/file

# The url of the raw file after clicking to view it
curl -L https://raw.github.com/org/repo/file?login=username&token=the_token 
49
Matt Gibson

Die vorherigen Antworten funktionieren nicht (oder nicht mehr).

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

BEARBEITEN: API-Referenzen für die Lösung lauten wie folgt:

72
thomasfuchs

Alternativ können Sie ein github "Persönliches Zugriffstoken" ( https://github.com/settings/tokens ) verwenden:

TOKEN=...
curl -s https://[email protected]/<user or organization>/<repo name>/<branch>/<path to file>/<file_name>

Beispiel:

$ curl -s https://[email protected]/concourse/concourse/master/README.md
....
11
theartofrain

Ich weiß, dass dies eine alte Frage ist, aber keine der oben vorgeschlagenen Lösungen hat für mich funktioniert. Vielleicht hat sich die API seitdem geändert.

Das hat funktioniert:

curl -H 'Authorization: token [insert your token here]' -o output.txt https://raw.githubusercontent.com/[organization]/[repo]/[branch]/[path to file]

8
mark amos

Oder wenn Sie kein Token haben:

curl --user [your_user] 'https://raw.github.com/path/to/file.config' > file.config
5
PeqNP

Ich hatte ein paar Minuten damit zu kämpfen, bis mir klar wurde, dass nur die URL in Anführungszeichen gesetzt werden muss, um dem Etwas zu entgehen. 

curl "https://raw.github.com/org/repo/file?login=username&token=the_token"

Das hat für mich in meinem privaten Repo funktioniert.

4
Philip Forget

Ich habe einen Authentifizierungsfehler erhalten, als die URL zu Amazon S3 umgeleitet wurde:

Es ist nur ein Authentifizierungsmechanismus zulässig. nur der X-Amz-Algorithm-Abfrageparameter ...

Der Wechsel vom Authorization: token X-Header zum ?access_token=<token>-Abfrageparameter hat für mich funktioniert.

2
chrismo

Wir mussten ziemlich oft Dateien von privaten GitHub-Repos herunterladen, und hackige Shell-Skripte haben das nicht ganz geschnitten. Deshalb haben wir fetch entwickelt, ein Open-Source-Tool, das plattformübergreifend ist und das Herunterladen von Quelldateien erleichtert Freigeben von Assets aus einem Git-Tag, einem Commit oder einem Zweig von öffentlichen und privaten GitHub-Repos. 

Wenn Sie beispielsweise die Datei baz von Version 0.1.3 eines privaten GitHub-Repos nach /tmp herunterladen möchten, gehen Sie folgendermaßen vor:

GITHUB_OAUTH_TOKEN="your token"
fetch --repo="https://github.com/foo/bar" --tag="0.1.3" --source-path="/baz" /tmp
1

Nur eine Ergänzung zu der akzeptierten Antwort: Wenn Sie die Github Enterprise-URL verwenden, ist dies etwas anders:

curl -H 'Authorization: token [your token]' \
-H 'Accept: application/vnd.github.v3.raw' \
-L https://[your domain]/api/v3/repos/[owner]/[repo-name]/contents/[path of file]
0
lonewarrior556

Unten sollte gut funktionieren. Ein "raw" vor dem Zweignamen (in diesem Fall Master).

curl -L -O https://github.com/your/repo/raw/master/fetch_file.sh

0
Subhakar K S
  1. im browser öffne dein github repo: klicke auf die datei
  2. öffnen Sie die Entwicklertools im Browser: Wählen Sie die Registerkarte Netzwerk
  3. im browser github: klicke auf den download button
  4. popup schließen
  5. in den Browser-Entwicklungstools: Rechtsklick auf Liste mit file_name?token=ABAHQCAT6KG...
  6. wählen Sie Kopieren -> Linkadresse kopieren

    uRL ist im Format:

    https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I

  7. im Terminal:

    wget -O myFilename https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I

Der Link ist nur für eine begrenzte Zeit gültig oder Sie können Ihr Token erstellen: GitHub article

0
Milan Rakos