Antworten:
Wenn Sie alle Dateien für einen bestimmten Zweig auflisten möchten, zB master:
git ls-tree -r master --name-only
Mit dieser -rOption wird die Datei in Unterverzeichnisse verschoben und jede Datei gedruckt, die derzeit der Versionskontrolle unterliegt. Sie können auch angeben, HEADanstatt masterdie Liste für einen anderen Zweig abzurufen, in dem Sie sich möglicherweise befinden.
Wenn Sie eine Liste aller jemals existierenden Dateien erhalten möchten, sehen Sie hier :
git log --pretty = format: --name-only --diff-filter = A | sort -u
git ls-tree -r master --name-onlydies das Gleiche wie bei der ersten Option ist, ohne dass das Symbol cut. Ach, und Sie können angeben , HEADstatt , masterwenn Sie nur diese Liste soll für was auch immer Zweig Sie sind zur Zeit auf.
-? Es führt dazu, dass einige zusätzliche Zeilen einige Dateien in einer zweiten Spalte anzeigen, die von der ersten wiederholt werden.
Der git ls-filesBefehl wird tun, was Sie brauchen.
Quelle: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-filesstatt git ls-tree -r master --name-onlyist sicherlich einfacher.
git-ls-filesBinärdatei. Es gibt die gitBinärdatei mit dem ls-filesBefehl. Der Link zur Dokumentation ist inhaltlich korrekt, technisch jedoch für eine veraltete Binärdatei.
git-commit, git-init, git-ls-filesusw. , obwohl die Programme tatsächlich Unterbefehle. git-ls-filesHöchstwahrscheinlich gab es nie eine Binärdatei. Der Grund dafür ist, dass es mit dem externen Unterbefehlsmechanismus konsistent ist, mit dem Sie einen git fooBefehl durch Schreiben einer git-fooBinärdatei registrieren können .
git ls-files druckt nur Dateien im aktuellen Arbeitsverzeichnis.
Wenn Sie zum Beispiel ein Git-Repo für dotfiles ( core.worktree = /) haben, dann haben Sie Dateien außerhalb des Git- Stamms 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 möchten, dass Pfade relativ zu Ihrem aktuellen (Shell-) Verzeichnis angegeben werden, führt dies die folgenden Schritte aus:
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
git ls-filesalle im aktuellen Verzeichnis und darunter angezeigt . Es werden nur keine Dateien angezeigt, die im Repo gelöscht wurden.
Sie können auch den gitkinteraktiven Repository-Viewer verwenden.

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