Ich möchte eine Kopie der neuesten Version einer Datei extrahieren, die sich in einem Git-Repository befindet, und sie zur Verarbeitung an ein Skript übergeben. Mit svn oder hg benutze ich einfach den Befehl "cat":
Drucken Sie die angegebenen Dateien so, wie sie bei der angegebenen Revision waren. Wenn keine Revision angegeben ist, wird das übergeordnete Element des Arbeitsverzeichnisses verwendet, oder Tipp, wenn keine Revision ausgecheckt ist.
(das ist aus der Beschreibung von hg cat in der hg Dokumentation)
Was ist der entsprechende Befehl, um dies mit git zu tun?
git
version-control
Richard Boulton
quelle
quelle
Antworten:
Wo rev die Revision ist.
Unter http://git.or.cz/course/svn.html finden Sie einen Vergleich der Befehle git und svn.
quelle
Es gibt eine "Git Cat-Datei", die Sie folgendermaßen ausführen können:
$ git cat-file blob v1.0:path/to/file
Hier können Sie 'v1.0' durch den gewünschten Zweig, Tag oder Commit-SHA ersetzen und dann 'path / to / file' durch den relativen Pfad im Repository. Sie können auch '-s' übergeben, um die Größe des Inhalts anzuzeigen, wenn Sie möchten.
Möglicherweise näher an den 'cat'-Befehlen, an die Sie gewöhnt sind, obwohl die zuvor erwähnte' show 'fast dasselbe bewirkt.
quelle
git show
ist der Befehl, den Sie suchen. Aus der Dokumentation:quelle
Arbeiten Sie auch mit Filialnamen (wie HEAD im 1. S.):
quelle
Verwenden Sie
git show
, wie ingit show commit_sha_id:path/to/some/file.cs
.quelle
Ich habe ein Git Cat Shell-Skript geschrieben, das auf Github läuft
quelle
Es scheint keinen direkten Ersatz zu geben. In diesem Blogeintrag wird beschrieben, wie Sie das Äquivalent erstellen, indem Sie das letzte Commit ermitteln, dann den Hash für die Datei in diesem Commit ermitteln und dann ausgeben.
(Der Blogeintrag enthält Tippfehler und verwendet die oben genannten mit dem Befehl
svn
)quelle
Keiner der
git show
Vorschläge ist wirklich zufriedenstellend, da ich (wie ich es auch versuchen könnte) keinen Weg finden kann, die Metadaten-Cruft nicht vom oberen Rand der Ausgabe abzurufen. Der Geist der Katze (1) besteht nur darin, den Inhalt zu zeigen. Dies (unten) nimmt einen Dateinamen und eine optionale Nummer an. Die Zahl gibt an, wie festgeschrieben werden soll. (Commits, die diese Datei geändert haben. Commits, die die Zieldatei nicht ändern, werden nicht gezählt.)Zeigt den Inhalt von filename.txt ab dem letzten Commit von filename.txt und den Inhalt von 3 Commits zuvor an.
quelle
Für diejenigen, die bash verwenden, ist Folgendes eine nützliche Funktion:
Fügen Sie es in Ihre
.bashrc
Datei ein (Sie können einen beliebigen Namen verwenden, außergcat
.Anwendungsbeispiel:
oder
oder
quelle