English ▾ Themen ▾ Neueste Version ▾ git-archive zuletzt aktualisiert in 2.46.0

NAME

git-archive - Erstellt ein Archiv von Dateien aus einem benannten Baum

SYNOPSIS

git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>]
	      [-o <file> | --output=<file>] [--worktree-attributes]
	      [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
	      [<path>…​]

BESCHREIBUNG

Erstellt ein Archiv des angegebenen Formats, das die Baumstruktur für den benannten Baum enthält, und schreibt es auf die Standardausgabe. Wenn <präfix> angegeben ist, wird es den Dateinamen im Archiv vorangestellt.

git archive verhält sich anders, wenn eine Baum-ID anstelle einer Commit-ID oder Tag-ID angegeben wird. Wenn eine Baum-ID angegeben wird, wird die aktuelle Zeit als Änderungszeit jeder Datei im Archiv verwendet. Wenn andererseits eine Commit-ID oder Tag-ID angegeben wird, wird stattdessen die Commit-Zeit verwendet, die im referenzierten Commit-Objekt aufgezeichnet ist. Zusätzlich wird die Commit-ID in einem globalen erweiterten Pax-Header gespeichert, wenn das Tar-Format verwendet wird; sie kann mit git get-tar-commit-id extrahiert werden. In ZIP-Dateien wird sie als Kommentar gespeichert.

OPTIONEN

--format=<fmt>

Format des resultierenden Archivs. Mögliche Werte sind tar, zip, tar.gz, tgz und jedes Format, das über die Konfigurationsoption tar.<format>.command definiert ist. Wenn --format nicht angegeben ist und die Ausgabedatei angegeben ist, wird das Format nach Möglichkeit aus dem Dateinamen abgeleitet (z. B. schreibt das Schreiben nach foo.zip das Ergebnis im zip-Format). Andernfalls ist das Ausgabeformat tar.

-l
--list

Alle verfügbaren Formate anzeigen.

-v
--verbose

Fortschritt nach stderr melden.

--prefix=<prefix>/

Stellt <präfix>/ den Pfaden im Archiv voran. Kann wiederholt werden; der rechteste Wert wird für alle verfolgten Dateien verwendet. Sehen Sie unten, welcher Wert von --add-file verwendet wird.

-o <file>
--output=<file>

Schreibt das Archiv stattdessen in <file> anstelle von stdout.

--add-file=<file>

Eine nicht verfolgte Datei zum Archiv hinzufügen. Kann wiederholt werden, um mehrere Dateien hinzuzufügen. Der Pfad der Datei im Archiv wird durch Aneinanderreihung des Werts der letzten --prefix-Option (falls vorhanden) vor diesem --add-file und des Basisnamens von <file> aufgebaut.

--add-virtual-file=<path>:<content>

Fügt den angegebenen Inhalt dem Archiv hinzu. Kann wiederholt werden, um mehrere Dateien hinzuzufügen.

Das Argument <path> kann mit einem doppelten Anführungszeichen beginnen und enden; der enthaltene Dateiname wird als C-ähnlicher String interpretiert, d.h. der Backslash wird als Escape-Zeichen interpretiert. Der Pfad muss zitiert werden, wenn er einen Doppelpunkt enthält, um zu verhindern, dass der Doppelpunkt als Trennzeichen zwischen Pfad und Inhalt fehlinterpretiert wird, oder wenn der Pfad mit einem doppelten Anführungszeichen beginnt oder endet.

Der Dateimodus ist auf eine reguläre Datei beschränkt, und die Option kann von plattformabhängigen Befehlszeilenbeschränkungen betroffen sein. Für nicht-triviale Fälle schreiben Sie eine nicht verfolgte Datei und verwenden stattdessen --add-file.

Beachten Sie, dass im Gegensatz zu --add-file der im Archiv erstellte Pfad nicht von der --prefix-Option beeinflusst wird, da ein vollständiger <path> als Wert der Option angegeben werden kann.

--worktree-attributes

Sucht auch nach Attributen in .gitattributes-Dateien im Arbeitsverzeichnis (siehe ATTRIBUTE).

--mtime=<time>

Änderungszeit von Archiveinträgen festlegen. Ohne diese Option wird die Committer-Zeit verwendet, wenn <tree-ish> ein Commit oder Tag ist, und die aktuelle Zeit, wenn es ein Baum ist.

<extra>

Dies können beliebige Optionen sein, die das Archiv-Backend versteht. Siehe nächster Abschnitt.

--remote=<repo>

Anstatt ein Tar-Archiv aus dem lokalen Repository zu erstellen, ruft ein Tar-Archiv aus einem entfernten Repository ab. Beachten Sie, dass das entfernte Repository Einschränkungen für die zulässigen SHA1-Ausdrücke in <tree-ish> haben kann. Siehe git-upload-archive[1] für Details.

--exec=<git-upload-archive>

Wird mit --remote verwendet, um den Pfad zu git-upload-archive auf der entfernten Seite anzugeben.

<tree-ish>

Der Baum oder Commit, für den ein Archiv erstellt werden soll.

<path>

Ohne einen optionalen Pfadparameter werden alle Dateien und Unterverzeichnisse des aktuellen Arbeitsverzeichnisses in das Archiv aufgenommen. Wenn ein oder mehrere Pfade angegeben werden, werden nur diese aufgenommen.

BACKEND EXTRA OPTIONEN

zip

-<digit>

Kompressionslevel angeben. Größere Werte erlauben dem Befehl, mehr Zeit aufzuwenden, um zu einer kleineren Größe zu komprimieren. Unterstützte Werte reichen von -0 (nur speichern) bis -9 (beste Rate). Standard ist -6, wenn nicht angegeben.

tar

-<number>

Kompressionslevel angeben. Der Wert wird an den in tar.<format>.command konfigurierten Kompressionsbefehl übergeben. Siehe die Handbuchseite des konfigurierten Befehls für die Liste der unterstützten Level und das Standardlevel, wenn diese Option nicht angegeben ist.

KONFIGURATION

tar.umask

Diese Variable kann verwendet werden, um die Berechtigungsbits von Tar-Archiveinträgen einzuschränken. Der Standardwert ist 0002, was das Schreibrecht für andere abschaltet. Der spezielle Wert "user" bedeutet, dass die umask des archivierenden Benutzers stattdessen verwendet wird. Siehe umask(2) für Details. Wenn --remote verwendet wird, tritt nur die Konfiguration des entfernten Repositories in Kraft.

tar.<format>.command

Diese Variable gibt einen Shell-Befehl an, durch den die von git archive generierte Tar-Ausgabe geleitet werden soll. Der Befehl wird über die Shell mit der generierten Tar-Datei auf seiner Standardeingabe ausgeführt und sollte die endgültige Ausgabe auf seiner Standardausgabe produzieren. Kompressionslevel-Optionen werden an den Befehl übergeben (z. B. -9).

Die Formate tar.gz und tgz werden automatisch definiert und verwenden standardmäßig den magischen Befehl git archive gzip, der eine interne Implementierung von gzip aufruft.

tar.<format>.remote

Wenn wahr, wird das Format für die Verwendung durch entfernte Clients über git-upload-archive[1] aktiviert. Standardmäßig falsch für benutzerdefinierte Formate, aber wahr für die Formate tar.gz und tgz.

ATTRIBUTE

export-ignore

Dateien und Verzeichnisse mit dem Attribut export-ignore werden nicht zu Archivdateien hinzugefügt. Siehe gitattributes[5] für Details.

export-subst

Wenn das Attribut export-subst für eine Datei gesetzt ist, erweitert Git mehrere Platzhalter beim Hinzufügen dieser Datei zu einem Archiv. Siehe gitattributes[5] für Details.

Beachten Sie, dass Attribute standardmäßig aus den .gitattributes-Dateien im zu archivierenden Baum stammen. Wenn Sie die Art und Weise, wie die Ausgabe generiert wird, nachträglich ändern möchten (z. B. Sie haben committet, ohne einen geeigneten export-ignore in seiner .gitattributes hinzuzufügen), passen Sie die ausgecheckte .gitattributes-Datei nach Bedarf an und verwenden Sie die Option --worktree-attributes. Alternativ können Sie die erforderlichen Attribute, die beim Archivieren jedes Baumes gelten sollen, in Ihrer Datei $GIT_DIR/info/attributes beibehalten.

BEISPIELE

git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)

Erstellt ein Tar-Archiv, das den Inhalt des letzten Commits im aktuellen Branch enthält, und extrahiert es in das Verzeichnis /var/tmp/junk.

git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz

Erstellt ein komprimiertes Tarball für das Release v1.4.0.

git archive --format=tar.gz --prefix=git-1.4.0/ v1.4.0 >git-1.4.0.tar.gz

Dasselbe wie oben, aber mit der integrierten Tar.gz-Handhabung.

git archive --prefix=git-1.4.0/ -o git-1.4.0.tar.gz v1.4.0

Dasselbe wie oben, aber das Format wird aus der Ausgabedatei abgeleitet.

git archive --format=tar --prefix=git-1.4.0/ v1.4.0^{tree} | gzip >git-1.4.0.tar.gz

Erstellt ein komprimiertes Tarball für das Release v1.4.0, aber ohne globalen erweiterten Pax-Header.

git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ > git-1.4.0-docs.zip

Legt alles im Documentation/-Verzeichnis des aktuellen HEAD in git-1.4.0-docs.zip, mit dem Präfix git-docs/.

git archive -o latest.zip HEAD

Erstellt ein Zip-Archiv, das den Inhalt des letzten Commits im aktuellen Branch enthält. Beachten Sie, dass das Ausgabeformat durch die Erweiterung der Ausgabedatei abgeleitet wird.

git archive -o latest.tar --prefix=build/ --add-file=configure --prefix= HEAD

Erstellt ein Tar-Archiv, das den Inhalt des letzten Commits im aktuellen Branch ohne Präfix und die nicht verfolgte Datei configure mit dem Präfix build/ enthält.

git config tar.tar.xz.command "xz -c"

Konfiguriert ein "tar.xz"-Format zum Erstellen von LZMA-komprimierten Tarfiles. Sie können es verwenden, indem Sie --format=tar.xz angeben oder eine Ausgabedatei wie -o foo.tar.xz erstellen.

SIEHE AUCH

GIT

Teil der git[1] Suite