Respuestas:
Si desea enumerar todos los archivos para una rama específica, por ejemplo master:
git ls-tree -r master --name-only
La -ropción le permitirá recurrir a subdirectorios e imprimir cada archivo actualmente bajo control de versiones. También puede especificar en HEADlugar de masterobtener la lista de cualquier otra rama en la que pueda estar.
Si desea obtener una lista de todos los archivos que alguna vez existieron, consulte aquí :
git log --pretty = formato: --name-only --diff-filter = A | ordenar -u
git ls-tree -r master --name-onlyharía lo mismo que la primera opción, sin necesidad de cut. Ah, y puede especificar en HEADlugar de mastersi solo desea esta lista para cualquier rama en la que se encuentre actualmente.
-? Hace que algunas líneas adicionales muestren algunos archivos en una segunda columna que se repiten desde la primera.
El git ls-filescomando hará lo que necesites.
Fuente: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-filesen lugar de git ls-tree -r master --name-onlyes ciertamente más simple.
git-ls-filesbinario. Existe el gitbinario con el ls-filescomando. El enlace a la documentación es correcto en contenido, pero técnicamente para un binario desactualizado.
git-commit, git-init, git-ls-files, etc a pesar de que los programas son en realidad Subcomandos. Nunca hubo un git-ls-filesbinario, lo más probable. El razonamiento es que es coherente con el mecanismo de subcomando externo, que le permite registrar un git foocomando escribiendo un git-foobinario.
git ls-files solo imprimirá archivos en el directorio de trabajo actual.
Si, por ejemplo, tiene un repositorio git para dotfiles ( core.worktree = /), entonces tendrá archivos fuera de la raíz git y ese simple comando ya no funcionará.
En resumen, esto funcionará:
git --git-dir "`git rev-parse --git-dir`" \
-C "`git config core.worktree || pwd`" \
ls-files
Ejemplo:
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
Si desea rutas especificadas en relación con su directorio actual (shell), esto hace el trabajo:
alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'
y en el ejemplo anterior, imprimiría
README
../../../etc/ssh/sshd_config
git ls-filesmuestra todo en el directorio actual y a continuación. Simplemente no muestra los archivos que se eliminaron en el repositorio.
También puede usar el gitkvisor de repositorio interactivo.

Eche un vistazo a la imagen, en el lado derecho hay dos opciones de parche y Árbol. Si selecciona el árbol, puede ver la estructura de carpetas para cada confirmación.