Risposte:
Se si desidera elencare tutti i file per un ramo specifico, ad esempio master
:
git ls-tree -r master - solo nome
L' -r
opzione consentirà di ricorrere in sottodirectory e stamperà ogni file attualmente sotto controllo di versione. Puoi anche specificare HEAD
invece di master
ottenere 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-only
farebbe lo stesso della prima opzione, senza bisogno di cut
. Ah, e puoi specificare HEAD
invece master
se 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-files
comando farà ciò di cui hai bisogno.
Fonte: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-files
invece di git ls-tree -r master --name-only
è sicuramente più semplice.
git-ls-files
binario. C'è il git
binario con il ls-files
comando. 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-files
binario, molto probabilmente. Il ragionamento è che è coerente con il meccanismo del sottocomando esterno, che consente di registrare un git foo
comando scrivendo un file git-foo
binario.
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-files
mostra tutto nella directory corrente e sotto. Semplicemente non mostra i file che sono stati eliminati nel repository.
È inoltre possibile utilizzare il gitk
visualizzatore 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.