Git - Listet alle Dateien auf, die sich aktuell in der Quellcodeverwaltung befinden?

67694
Anonymous

Gibt es eine Möglichkeit, alle Dateien aufzulisten, die sich derzeit in git unter Quellcodeverwaltung befinden? (Nicht nur die, die modifiziert wurden).

93

4 Antworten auf die Frage

100
slhck

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

git ls-tree -r master - name-only 

Die -rOption lässt es in Unterverzeichnisse rekursieren und jede Datei, die aktuell unter Versionskontrolle steht, drucken. Sie können auch angeben HEADvon anstelle masterbekommen die Liste für jeden anderen Zweig Sie in sein könnten.

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

git log --pretty = format: --name-status | Schnitt -f2- | sort -u 
Danke, slhck, genau das, wonach ich gesucht habe - und auch nützlich, um das zweite zu kennen. Wird in 5 ½ Minuten als korrekt markiert, wenn ich darf. :-) Anonymous vor 12 Jahren 1
Danke für die Antwort. Ich habe das gesucht. Beachten Sie, dass `git ls-tree -r master --name-only` dasselbe tun wird wie die erste Option, ohne dass` cut` erforderlich ist. Ah, und Sie können "HEAD" anstelle von "master" angeben, wenn Sie diese Liste für jeden Zweig wünschen, in dem Sie sich gerade befinden. maurits vor 12 Jahren 3
Wenn Sie "git ls-files" ausführen, sparen Sie ein paar Zeichen :) Zain R vor 9 Jahren 4
50
Mihai Capotă

Der git ls-filesBefehl wird das tun, was Sie brauchen.

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

"git ls-files" anstelle von "git ls-tree -r master - name-only" ist sicherlich einfacher. karatedog vor 11 Jahren 3
Entschuldigung, aber meine Bearbeitung war nicht ungültig. Im aktuellen git gibt es keine "git-ls-files" - Binärdatei. Es gibt die `git`-Binärdatei mit dem Befehl` ls-files`. Der Link zur Dokumentation ist inhaltlich korrekt, technisch jedoch für eine veraltete Binärdatei. JonnyJD vor 10 Jahren 1
@JonnyJD, möglicherweise als ungültig markiert, da Ihre Bearbeitung ein Kommentar sein sollte. Ascherer vor 10 Jahren 0
@JonnyJD Alle Git-Man-Pages werden als "git-commit", "git-init", "git-ls-files" usw. bezeichnet, auch wenn die Programme tatsächlich Unterbefehle sind. Höchstwahrscheinlich gab es niemals eine Binärdatei mit 'git-ls-files'. Der Grund ist, dass er mit dem externen Unterbefehlsmechanismus konsistent ist, der das Registrieren eines `git foo'-Befehls durch Schreiben einer` git-foo'-Binärdatei ermöglicht. Radon Rosborough vor 7 Jahren 1
3
AndiDog

git ls-files druckt nur Dateien im aktuellen Arbeitsverzeichnis.

Wenn Sie beispielsweise ein git-Repo für dotfiles ( core.worktree = /) haben, werden Sie Dateien außerhalb des git-Stammverzeichnisses haben 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 Verzeichnis (Shell-Verzeichnis) angegeben werden, führt dies die folgenden Aufgaben 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 
0
JPaget

Sie können auch den gitkinteraktiven Repository-Viewer verwenden.

Dies erwähnt ein Werkzeug, beantwortet aber nicht wirklich das "Wie". Können Sie dies zu einer umsetzbaren Lösung ausbauen? Nur jemanden in eine Forschungsrichtung zu weisen, damit er seine eigene Lösung entwickeln kann, ist eher als Kommentar angebracht. Vielen Dank. [aus Bewertung] (https://superuser.com/review/low-quality-posts/737832) fixer1234 vor 6 Jahren 1