English ▾ Themen ▾ Neueste Version ▾ git-ls-tree zuletzt aktualisiert in 2.42.0

NAME

git-ls-tree - Auflisten der Inhalte eines Tree-Objekts

SYNOPSIS

git ls-tree [-d] [-r] [-t] [-l] [-z]
	    [--name-only] [--name-status] [--object-only] [--full-name] [--full-tree] [--abbrev[=<n>]] [--format=<format>]
	    <tree-ish> [<path>…​]

BESCHREIBUNG

Listet die Inhalte eines gegebenen Tree-Objekts auf, ähnlich wie "/bin/ls -a" im aktuellen Arbeitsverzeichnis. Beachten Sie, dass

  • sich das Verhalten leicht von dem von "/bin/ls" unterscheidet, da <path> nur eine Liste von Mustern angibt, die abgeglichen werden sollen. Zum Beispiel wird die Angabe eines Verzeichnisnamens (ohne -r) anders behandelt, und die Reihenfolge der Argumente spielt keine Rolle.

  • ist das Verhalten ähnlich dem von "/bin/ls", da <path> relativ zum aktuellen Arbeitsverzeichnis genommen wird. Wenn Sie sich z. B. in einem Verzeichnis sub befinden, das ein Verzeichnis dir enthält, können Sie git ls-tree -r HEAD dir ausführen, um den Inhalt des Trees (d. h. sub/dir in HEAD) aufzulisten. Sie möchten keinen Tree angeben, der sich nicht auf der Root-Ebene befindet (z. B. git ls-tree -r HEAD:sub dir) in diesem Fall, da dies dazu führen würde, dass sub/sub/dir im HEAD Commit abgefragt wird. Das aktuelle Arbeitsverzeichnis kann jedoch durch Übergabe der Option --full-tree ignoriert werden.

OPTIONEN

<tree-ish>

ID eines Tree-ish.

-d

Zeigt nur den benannten Tree-Eintrag selbst an, nicht seine Kinder.

-r

Rekursiv in Sub-Trees.

-t

Zeigt Tree-Einträge auch dann an, wenn sie rekursiv verarbeitet werden. Hat keine Auswirkung, wenn -r nicht übergeben wurde. -d impliziert -t.

-l
--long

Zeigt die Objektgröße von Blob- (Datei-)Einträgen an.

-z

\0 Zeilentrennung bei der Ausgabe und keine Anführungszeichen für Dateinamen. Siehe unten OUTPUT FORMAT für weitere Informationen.

--name-only
--name-status

Listet nur Dateinamen auf (anstelle der "langen" Ausgabe), einen pro Zeile. Kann nicht mit --object-only kombiniert werden.

--object-only

Listet nur Namen der Objekte auf, einen pro Zeile. Kann nicht mit --name-only oder --name-status kombiniert werden. Dies entspricht der Angabe von --format='%(objectname), aber sowohl für diese Option als auch für dieses genaue Format verwendet der Befehl einen handoptimierten Codepfad anstelle des generischen Formatierungsmechanismus.

--abbrev[=<n>]

Anstatt die vollständigen 40-stelligen hexadezimalen Objektzeilen anzuzeigen, wird der kürzeste Präfix angezeigt, der mindestens <n> Hex-Ziffern lang ist und das Objekt eindeutig referenziert. Eine nicht standardmäßige Anzahl von Ziffern kann mit --abbrev=<n> angegeben werden.

--full-name

Anstatt die Pfadnamen relativ zum aktuellen Arbeitsverzeichnis anzuzeigen, werden die vollständigen Pfadnamen angezeigt.

--full-tree

Begrenzt die Auflistung nicht auf das aktuelle Arbeitsverzeichnis. Impliziert --full-name.

--format=<format>

Eine Zeichenkette, die %(feldname) aus dem angezeigten Ergebnis interpoliert. Sie interpoliert auch %% zu % und %xNN, wobei NN Hexadezimalziffern sind, wird zu einem Zeichen mit dem Hex-Code NN interpoliert; z. B. wird %x00 zu \0 (NUL), %x09 zu \t (TAB) und %x0a zu \n (LF). Wenn angegeben, kann --format nicht mit anderen formatierungsändernden Optionen kombiniert werden, einschließlich --long, --name-only und --object-only.

[<pfad>…​]

Wenn Pfade angegeben werden, werden diese angezeigt (beachten Sie, dass dies keine echten Pfadnamen sind, sondern eine Liste von Mustern, die abgeglichen werden sollen). Andernfalls wird implizit die Root-Ebene des Trees als einziges Pfadargument verwendet.

Ausgabeformat

Das Ausgabeformat von ls-tree wird entweder durch die Option --format oder durch andere formatierungsändernde Optionen wie --name-only usw. bestimmt (siehe --format oben).

Die Verwendung bestimmter --format-Direktiven ist gleichwertig zur Verwendung dieser Optionen, aber das Aufrufen des vollständigen Formatierungsmechanismus kann langsamer sein als die Verwendung einer geeigneten Formatierungsoption.

In Fällen, in denen --format exakt einer vorhandenen Option entspricht, ls-tree verwendet den entsprechenden schnelleren Pfad. Somit ist das Standardformat gleichwertig zu

%(objectmode) %(objecttype) %(objectname)%x09%(path)

Dieses Ausgabeformat ist kompatibel damit, was --index-info --stdin von git update-index erwartet.

Wenn die Option -l verwendet wird, ändert sich das Format zu

%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)

Die Objektgröße, identifiziert durch <objectname>, wird in Bytes angegeben und rechtsbündig mit einer Mindestbreite von 7 Zeichen formatiert. Die Objektgröße wird nur für Blobs (Datei-)Einträge angegeben; für andere Einträge wird ein - Zeichen anstelle der Größe verwendet.

Ohne die Option -z werden Pfadnamen mit "ungewöhnlichen" Zeichen wie für die Konfigurationsvariable core.quotePath erklärt (siehe git-config[1]) in Anführungszeichen gesetzt. Bei Verwendung von -z wird der Dateiname unverändert ausgegeben und die Zeile wird mit einem NUL-Byte beendet.

Angepasstes Format

Es ist möglich, in einem benutzerdefinierten Format zu drucken, indem die Option --format verwendet wird, die verschiedene Felder mithilfe einer %(feldname)-Notation interpolieren kann. Wenn Sie beispielsweise nur an den Feldern "objectname" und "path" interessiert sind, können Sie mit einem spezifischen "--format" wie diesem ausführen:

git ls-tree --format='%(objectname) %(path)' <tree-ish>

FELDNAMEN

Verschiedene Werte aus strukturierten Feldern können zur Interpolation in die resultierende Ausgabe verwendet werden. Für jede Ausgabzeile können die folgenden Namen verwendet werden

objectmode

Der Modus des Objekts.

objecttype

Der Typ des Objekts (commit, blob oder tree).

objectname

Der Name des Objekts.

objectsize[:padded]

Die Größe eines blob-Objekts ("-" wenn es ein commit oder tree ist). Es unterstützt auch ein aufgefülltes Format der Größe mit "%(objectsize:padded)".

path

Der Pfadname des Objekts.

GIT

Teil der git[1] Suite