723 Stimmen

Wie kann ich Git dazu bringen, eine Liste der verfolgten Dateien anzuzeigen?

Mit der Befehlszeile git, wie kann ich git dazu bringen eine Liste der Dateien anzuzeigen, die im Repository verfolgt werden?

853voto

Tuxdude Punkte 43955

Wenn Sie alle Dateien auflisten möchten, die derzeit unter dem Zweig master verfolgt werden, könnten Sie diesen Befehl verwenden:

git ls-tree -r master --name-only

Wenn Sie eine Liste der Dateien möchten, die jemals existiert haben (d. h. einschließlich gelöschter Dateien):

git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'

247voto

vonbrand Punkte 10792

Die von git verwalteten Dateien werden mit git ls-files angezeigt. Sieh dir die Handbuchseite dazu an.

52voto

Nathan Punkte 8290

Die akzeptierte Antwort zeigt nur Dateien im Verzeichnisbaum des aktuellen Verzeichnisses an. Um alle verfolgten Dateien anzuzeigen, die committed wurden (im aktuellen Branch), verwenden Sie

git ls-tree --full-tree --name-only -r HEAD
  • --full-tree lässt den Befehl so laufen, als wären Sie im Stammverzeichnis des Repositories.
  • -r rekursiviert in Unterverzeichnisse. In Kombination mit --full-tree erhalten Sie alle committeden, verfolgten Dateien.
  • --name-only entfernt SHA / Berechtigungsinformationen, wenn Sie nur die Dateipfade möchten.
  • HEAD gibt an, für welchen Branch Sie die Liste der verfolgten, committeden Dateien haben möchten. Sie könnten dies auf master oder einen anderen Branch-Namen ändern, aber HEAD ist der Commit, den Sie gerade ausgecheckt haben.

Dies ist die Methode aus der akzeptierten Antwort auf die ~doppelte Frage https://stackoverflow.com/a/8533413/4880003.

10voto

Bloody_fool Punkte 146

Sie möchten möglicherweise eine farbige Ausgabe damit haben.

Ich verwende diesen Einzeiler, um die verfolgten Dateien und Verzeichnisse im aktuellen Verzeichnis des aktuellen Branches aufzulisten:

ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)

Sie möchten es vielleicht als Alias hinzufügen:

alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)'

Wenn Sie Dateien rekursiv auflisten möchten:

'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)

Und ein Alias:

alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)"

5voto

xeruf Punkte 1907

Basierend auf den vorhandenen Antworten können Sie tree verwenden, um es etwas hübscher anzusehen:

git ls-tree --full-tree --name-only -r HEAD | tree --fromfile .

Sie möchten dies wahrscheinlich paginieren:

git ls-tree --full-tree --name-only -r HEAD | tree -C --fromfile . | ${PAGER:-less}

Das verdient auf jeden Fall einen Platz als tree Alias in der Git-Konfiguration :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X