Git – Alle Dateien auflisten, die derzeit unter Quellcodeverwaltung stehen?

Git – Alle Dateien auflisten, die derzeit unter Quellcodeverwaltung stehen?

Gibt es eine Möglichkeit, alle Dateien aufzulisten, die derzeit in Git der Quellcodeverwaltung unterliegen? (Nicht nur die, die geändert wurden).

Antwort1

Wenn Sie alle Dateien für einen bestimmten Zweig auflisten möchten, zB master:

git ls-Baum-r Master --name-only

Mit dieser -rOption können Sie in Unterverzeichnisse rekursiv vorgehen und alle Dateien ausdrucken, die sich derzeit unter Versionskontrolle befinden. Sie können auch HEADanstelle von angeben master, um die Liste für jeden anderen Zweig abzurufen, in dem Sie sich möglicherweise befinden.

Wenn Sie eine Liste aller Dateien erhalten möchten, die jemals existiert haben,siehe hier:

Git-Protokoll--pretty=Format: --name-only --diff-filter=A | sort -u

Antwort2

Der git ls-filesBefehl erledigt das, was Sie brauchen.

Quelle:http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html

Antwort3

git ls-filesdruckt nur Dateien im aktuellen Arbeitsverzeichnis.

Wenn Sie beispielsweise ein Git-Repository für Dotfiles ( core.worktree = /) haben, befinden sich Dateien außerhalb des Git-Stammverzeichnisses und dieser einfache Befehl funktioniert nicht mehr.

Kurz gesagt, das wird funktionieren:

git --git-dir "`git rev-parse --git-dir`" \
    -C "`git config core.worktree || pwd`" \
    ls-files

Beispiel:

mkdir ~/dotfiles
cd ~/dotfiles
git config core.worktree /

# Ignore all files by default, else Git will find all files under "/"
echo "*" > .git/info/exclude

# Add files at the git repo's root and somewhere in the work tree
touch README
git add -f README
git add -f /etc/ssh/sshd_config

# `git status` would now print:
# new file:   ../../../etc/ssh/sshd_config
# new file:   README
git status

git commit -m "Initial commit"

# At this point, `git ls-files` prints only:
# README
git ls-files

# But you can print all files inside the work tree. This will print:
# etc/ssh/sshd_config
# home/yourusername/dotfiles/README
git --git-dir "`git rev-parse --git-dir`" -C "`git config core.worktree || pwd`" ls-files

Wenn Sie Pfade angeben möchtenrelativzu Ihrem aktuellen (Shell-)Verzeichnis. Das funktioniert folgendermaßen:

alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'

und im obigen Beispiel würde es drucken

README
../../../etc/ssh/sshd_config

Antwort4

Bildschirmfoto

Bitte schauen Sie sich das Bild an, auf der rechten Seite gibt es zwei Optionen: Patch und Tree. Wenn Sie Tree auswählen, können Sie die Ordnerstruktur für jedes Commit anzeigen.

verwandte Informationen