Rufen Sie eine einzelne Datei aus einem Repository ab

Lesezeit: 6 Minuten

Was ist der effizienteste Mechanismus (in Bezug auf die übertragenen Daten und den verwendeten Speicherplatz), um den Inhalt einer einzelnen Datei aus einem entfernten Git-Repository abzurufen?

Bisher ist mir folgendes gelungen:

git clone --no-checkout --depth 1 [email protected]:foo/bar.git && cd bar && git show HEAD:path/to/file.txt

Das wirkt immer noch übertrieben.

Was ist mit dem Abrufen mehrerer Dateien aus dem Repo?

  • Ah. Ich würde es lieben, wenn es eine eingebaute Möglichkeit gäbe, das Äquivalent von “cat-remote” und “tag-remote” zu machen.

    – conni

    7. Juli 2010 um 11:27 Uhr

  • Ich habe dasselbe Problem. Ich möchte dieselbe Lizenzdatei in 2 Repos haben. Bearbeiten Sie die Datei in 1 Repo und aktualisieren Sie dann automatisch die Kopie im anderen Repo.

    – GlassGhost

    26. Januar 2011 um 11:04 Uhr

  • Mögliches Duplikat von How to checkout only one file from git repository?

    – Ciro Santilli Путлер Капут 六四事

    30. März 2016 um 10:48 Uhr

Rufen Sie eine einzelne Datei aus einem Repository ab
Israel Dov

In Git-Version 1.7.9.5 scheint dies zu funktionieren, um eine einzelne Datei von einer Fernbedienung zu exportieren

git archive --remote=ssh://host/pathto/repo.git HEAD README.md

Dadurch wird der Inhalt der Datei kategorisiert README.md.

  • … Außer es funktioniert nicht auf GitHub. Verdammt. 🙁 twitter.com/GitHubHelp/status/322818593748303873

    – Rob Howard

    26. September 2013 um 14:20 Uhr

  • Dies scheint nicht die Rohdatei zu ergeben, sondern eine Tar-Datei mit nur einer einzigen Datei.

    – Frerich Raabe

    10. März 2014 um 19:58 Uhr

  • @FrerichRaabe füge einfach ` | hinzu tar -x` auf den Befehl. git archive --remote=ssh://host/pathto/repo.git HEAD README.md | tar -x cat README.md

    – Renier

    21. Mai 2015 um 18:46 Uhr


  • Sie können verwenden tar -xO zur Ausgabe an STDOUT für Rohrleitungen, z FILE=README.md && git archive --remote=ssh://host/pathto/repo.git HEAD "$FILE" | tar -xO "$FILE"

    – paulcm

    25. August 2015 um 11:56 Uhr

  • Genau die Antwort, nach der ich gesucht habe, aber ich bekomme “fatal: Operation not supported by protocol”. als Antwort von Git. Argh.

    – mhvelplund

    18. Februar 2016 um 8:06 Uhr

Rufen Sie eine einzelne Datei aus einem Repository ab
Robert Ritter

Anknüpfend an Jakubs Antwort. git archive erzeugt ein tar- oder zip-Archiv, also müssen Sie die Ausgabe durch tar leiten, um den Dateiinhalt zu erhalten:

git archive --remote=git://git.foo.com/project.git HEAD:path/to/directory filename | tar -x

Speichert eine Kopie von „Dateiname“ aus dem HEAD des entfernten Repositorys im aktuellen Verzeichnis.

Die :path/to/directory Teil ist optional. Wenn ausgeschlossen, wird die abgerufene Datei gespeichert <current working dir>/path/to/directory/filename

Wenn Sie außerdem die Verwendung von aktivieren möchten git archive --remote Auf Git-Repositorys, die von git-daemon gehostet werden, müssen Sie die Konfigurationsoption daemon.uploadarch aktivieren. Sehen https://kernel.org/pub/software/scm/git/docs/git-daemon.html

  • Wenn es sich um eine Textdatei handelt und wir sie in einem anderen Teil speichern möchten, verwenden Sie am besten: | tar -xO > ~/destfile.ext

    – Yucer

    15. Juli 2015 um 10:52 Uhr

  • Funktioniert es mit einem bestimmten Commit? (dh man gibt sowohl eine bestimmte Datei als auch einen Commit an)

    – Alleo

    11. November 2021 um 23:26 Uhr

  • Jawohl. Ersetzen HEAD mit der Commit-ID, die Sie verwenden möchten. HEAD ist ein Alias, der sich entweder auf den aktuell ausgecheckten Commit (falls zutreffend) oder die Spitze des Standardzweigs bezieht. Ich habe die obige Antwort vor Jahren geschrieben und heute Morgen erfahren, dass GitHub keine Unterstützung bietet git archivedas macht es viel weniger nützlich.

    – Robert Ritter

    13. November 2021 um 6:50 Uhr

Wenn da ist Webinterface bereitgestellt (wie gitweb, cgit, Gitorious, ginatra), können Sie damit einzelne Dateien herunterladen (‘raw’ oder ‘plain’ view).

Wenn andere Seite aktiviert eskönnen Sie verwenden git-Archiv‘S ‘--remote=<URL>‘ Option (und möglicherweise auf ein Verzeichnis beschränken, in dem sich eine bestimmte Datei befindet), zum Beispiel:

$ git archive [email protected]:foo/bar.git --prefix=path/to/ HEAD:path/to/ |  tar xvf -

  • Hinweis: Das Beispiel wurde nicht getestet!

    – Jakub Narębski

    14. Juli 2009 um 15:51 Uhr

  • Für Ihre eigenen Repositories müssen Sie Upload-Archive ausdrücklich aktivieren, wenn Sie git-daemon (URLs im Stil von git://) mit verwenden git config daemon.uploadarch true auf dem Remote-Repository. Standardmäßig deaktiviert der Git-Daemon das Remote-Archiv mit „fatal: remote error: access denied or repository not exported: …“

    – Patthoyten

    7. Februar 2013 um 9:34 Uhr

  • +1 Die git archive Ansatz war mein erster Versuch – aber dann bemerkte ich, dass es erforderlich war tar auf dem Client-Rechner war für Windows-Benutzer nicht gerade praktisch. Am Ende haben wir von unserem Einheimischen abgeholt cgit Server. Es funktioniert, aber es ist nicht so schnell, wie ich es gerne hätte (und es muss immer noch laufen unix2dos oder ähnlich auf Windows-Rechnern, da wir Dateien mit Unix-Zeilenenden im Git-Repository speichern).

    – Frerich Raabe

    10. März 2014 um 19:47 Uhr

  • @FrerichRaabe Verwenden Sie -o fetched.zip. Siehe auch Option –format=.

    – achan

    6. Mai 2014 um 19:47 Uhr

  • Für das, was es wert ist, sieht es nicht so aus, als ob dies auf von GitHub gehosteten Repositories funktioniert. Sehen help.github.com/articles/can-i-archive-a-repository und groups.google.com/forum/#!topic/github/z8vLHcX0HxY

    – vmrob

    20. August 2014 um 22:19 Uhr

1646644095 628 Rufen Sie eine einzelne Datei aus einem Repository ab
Ankur Agarwal

Nicht im Allgemeinen, aber wenn Sie Github verwenden:

Für mich wget an die Roh-URL, erwies sich als der beste und einfachste Weg, eine bestimmte Datei herunterzuladen.

Öffnen Sie die Datei im Browser und klicken Sie auf die Schaltfläche „Raw“. Aktualisieren Sie jetzt Ihren Browser, kopieren Sie die URL und führen Sie a wget oder curl darauf.

wget-Beispiel:

wget 'https://github.abc.abc.com/raw/abc/folder1/master/folder2/myfile.py?token=DDDDnkl92Kw8829jhXXoxBaVJIYW-h7zks5Vy9I-wA%3D%3D' -O myfile.py

Curl-Beispiel:

curl 'https://example.com/raw.txt' > savedFile.txt

So exportieren Sie eine einzelne Datei von einer Fernbedienung:

git archive --remote=ssh://host/pathto/repo.git HEAD README.md | tar -x

Dadurch wird die Datei heruntergeladen README.md in Ihr aktuelles Verzeichnis.

Wenn Sie möchten, dass der Inhalt der Datei nach STDOUT exportiert wird:

git archive --remote=ssh://host/pathto/repo.git HEAD README.md | tar -xO

Sie können am Ende des Befehls mehrere Pfade angeben.

1646644097 379 Rufen Sie eine einzelne Datei aus einem Repository ab
KEIN KRIEG MIT RUSSLAND

Für mich sieht es nach einer Lösung aus: http://gitready.com/intermediate/2009/02/27/get-a-file-from-a-specific-revision.html

git show HEAD~4:index.html > local_file

wo 4 bedeutet vier Überarbeitung von jetzt an und ~ ist eine Tilde, wie im Kommentar erwähnt.

ich benutze das

$ cat ~/.wgetrc
check_certificate = off

$ wget https://raw.github.com/jquery/jquery/master/grunt.js
HTTP request sent, awaiting response... 200 OK
Length: 11339 (11K) [text/plain]
Saving to: `grunt.js'

  • Funktioniert für mich auch ohne wgetrc-Optimierungen: wget https://raw.github.com/bk322/bk_automates/master/bkubuntu/bkubuntu.bash

    – Adobe

    3. September 2012 um 7:54 Uhr

  • Meine Nachricht ist hilfreicher: ERROR: Certificate verification error for raw.github.com: unable to get local issuer certificate. To connect to raw.github.com insecurely, use '--no-check-certificate'.

    – Kos

    18. Januar 2013 um 13:42 Uhr


  • Dies funktioniert nur für öffentliche Repositories. Für private Repositorys benötigen Sie eine Authentifizierung.

    – Rikas

    5. Januar 2015 um 18:27 Uhr

964660cookie-checkRufen Sie eine einzelne Datei aus einem Repository ab

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy