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 -r
Option können Sie in Unterverzeichnisse rekursiv vorgehen und alle Dateien ausdrucken, die sich derzeit unter Versionskontrolle befinden. Sie können auch HEAD
anstelle 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-files
Befehl erledigt das, was Sie brauchen.
Quelle:http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
Antwort3
git ls-files
druckt 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
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.