Risposte:
Se si desidera elencare tutti i file per un ramo specifico, ad esempio master:
git ls-tree -r master - solo nome
L' -ropzione consentirà di ricorrere in sottodirectory e stamperà ogni file attualmente sotto controllo di versione. Puoi anche specificare HEADinvece di masterottenere l'elenco per qualsiasi altro ramo in cui potresti trovarti.
Se vuoi ottenere un elenco di tutti i file che siano mai esistiti, vedi qui :
git log --pretty = format: --name-only --diff-filter = A | ordina -u
git ls-tree -r master --name-onlyfarebbe lo stesso della prima opzione, senza bisogno di cut. Ah, e puoi specificare HEADinvece masterse vuoi solo questo elenco per qualsiasi ramo in cui ti trovi attualmente.
-? Fa sì che alcune righe aggiuntive mostrino alcuni file in una seconda colonna che sono ripetizioni della prima.
Il git ls-filescomando farà ciò di cui hai bisogno.
Fonte: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-filesinvece di git ls-tree -r master --name-onlyè sicuramente più semplice.
git-ls-filesbinario. C'è il gitbinario con il ls-filescomando. Il collegamento alla documentazione è corretto nel contenuto, ma tecnicamente per un file binario obsoleto.
git-commit, git-init, git-ls-files, ecc, anche se i programmi sono in realtà Sottocomandi. Non c'è mai stato un git-ls-filesbinario, molto probabilmente. Il ragionamento è che è coerente con il meccanismo del sottocomando esterno, che consente di registrare un git foocomando scrivendo un file git-foobinario.
git ls-files stamperà solo i file nella directory di lavoro corrente.
Se, ad esempio, hai un repository git per dotfiles ( core.worktree = /), allora avrai file al di fuori della radice git e quel semplice comando non funzionerà più.
In breve, questo funzionerà:
git --git-dir "`git rev-parse --git-dir`" \
-C "`git config core.worktree || pwd`" \
ls-files
Esempio:
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
Se si desidera specificare percorsi relativi alla directory corrente (shell), questo fa il lavoro:
alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'
e nell'esempio sopra, verrebbe stampato
README
../../../etc/ssh/sshd_config
git ls-filesmostra tutto nella directory corrente e sotto. Semplicemente non mostra i file che sono stati eliminati nel repository.
È inoltre possibile utilizzare il gitkvisualizzatore di repository interattivo.

Dai un'occhiata all'immagine, sul lato destro ci sono due opzioni patch e Tree. Se si seleziona la struttura ad albero, è possibile visualizzare la struttura delle cartelle per ciascun commit.