2010-05-15 12 views
22

Ich bin auf der Suche nach dem Äquivalent von svn cat in git.Git entspricht "Svn Katze" mit Remote-Repository

Ja, mir ist bekannt, dass the similar question hier gefragt wurde. Die Antwort lautet git show rev:path.

Für das Remote-Repository kann jedoch svn cat verwendet werden. Das heißt, ich kann svn cat [email protected] tun und die Datei von der angegebenen Revision des Remote-Repository holen, ohne das gesamte Repository zu bekommen. Mein Verständnis ist, dass git show nur für das lokale Repository gilt.

Eine Problemumgehung, die ich gefunden habe, ist die Verwendung der gitweb-Schnittstelle, um den Blob zu erhalten.

+3

Ich glaube nicht, dass es eine Möglichkeit gibt, dies zu tun, ohne mehr herunterzuladen, als Sie wollen: das git-Server-Protokoll stellt es nicht zur Verfügung. Abgesehen davon, dass Sie ein Remote-Repository herunterladen (ein Teil davon), ist das Einzige, was Sie tun können, Remoteinformationen zu erhalten (git ls-remote). –

+2

Ich würde mit Nicholas zustimmen: Ich denke, der einzige Weg, dies zu tun ist, "git fetch" (was Ihr Repository zu aktualisieren, aber nichts zusammenführen), dann führen Sie einen der Befehle in dem erwähnten Thread. – RyanWilcox

+1

oder git remote update (git fetch für alle Fernbedienungen) – xenoterracide

Antwort

3

In another thread wird erwähnt, dass es unmöglich ist, eine einzelne Datei abzurufen. Die einzigen Optionen bestehen darin, entweder das Remote-Repository abzurufen oder die Datei mit einem anderen Tool (z. B. einem Webbrowser) anzusehen.

Github bietet eine hervorragende Unterstützung für die Online-Anzeige von Dateien. Sie können das mit curl integrieren, wenn Sie auf der Kommandozeile bleiben möchten. Bei anderen Repositories sind solche Funktionen möglicherweise nicht vorhanden.

9

Wenn Sie die Menge der heruntergeladenen und/oder gespeicherten Daten auf Ihrer lokalen Festplatte minimieren möchten, können Sie die folgenden Befehle ausführen.

git clone --depth=1 --bare REPO 
cd REPO.git 
git show HEAD:PATH/TO/FILE 

--depth=1 bedeutet, dass Sie nur die neueste Version herunterladen werden, keine Geschichte. --bare bedeutet, dass Sie das Remote-Repository herunterladen, aber nicht tatsächlich einen funktionierenden Baum erstellen, wodurch Speicherplatz auf Ihrer lokalen Festplatte gespart wird.

Beachten Sie, dass die oben genannten Befehle nicht funktionieren, wenn Sie sich für eine andere als die neueste Version der Datei interessieren, da sie keinen Verlauf herunterladen.

7
git fetch 
git show remotes/origin/master:<filename> 

Offensichtlich ist Ihr Remote-Zweig möglicherweise nicht unter remotes/origin/master.

8

Hier ist ein Hack Sie mit aktuellen Versionen von Git verwenden können, um eine einzelne Datei von einem Remote-Repo zu bekommen (auf die Sie Zugriff haben Git), ohne den Repo-Klonen:

git archive [email protected]:myrepo master path/to/file1 | tar -xOf - > file1 

Die oben bekommt die Datei von master. Ändern Sie nach Ihren Bedürfnissen.