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