Respuestas:
Si desea enumerar todos los archivos para una rama específica, por ejemplo master
:
git ls-tree -r master --name-only
La -r
opción le permitirá recurrir a subdirectorios e imprimir cada archivo actualmente bajo control de versiones. También puede especificar en HEAD
lugar de master
obtener 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-only
haría lo mismo que la primera opción, sin necesidad de cut
. Ah, y puede especificar en HEAD
lugar de master
si 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-files
comando hará lo que necesites.
Fuente: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-files
en lugar de git ls-tree -r master --name-only
es ciertamente más simple.
git-ls-files
binario. Existe el git
binario con el ls-files
comando. 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-files
binario, lo más probable. El razonamiento es que es coherente con el mecanismo de subcomando externo, que le permite registrar un git foo
comando escribiendo un git-foo
binario.
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-files
muestra 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 gitk
visor 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.