Git: ¿Enumerar todos los archivos actualmente bajo control de código fuente?

Git: ¿Enumerar todos los archivos actualmente bajo control de código fuente?

¿Hay alguna manera de enumerar todos los archivos actualmente bajo control de código fuente en git? (No sólo aquellos que han sido modificados).

Respuesta1

Si desea enumerar todos los archivos de una rama específica, por ejemplo master:

git ls-árbol-r maestro --solo nombre

La -ropción le permitirá recurrir a subdirectorios e imprimir cada archivo actualmente bajo control de versión. También puede especificar HEADen lugar de masterobtener la lista de cualquier otra sucursal en la que se encuentre.

Si desea obtener una lista de todos los archivos que alguna vez existieron,mira aquí:

registro de git--pretty=formato: --solo nombre --diff-filter=A | ordenar -u

Respuesta2

El git ls-filescomando hará lo que necesites.

Fuente:http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html

Respuesta3

git ls-filessólo imprimirá archivos en el directorio de trabajo actual.

Si, por ejemplo, tiene un repositorio de git para archivos de puntos ( core.worktree = /), tendrá archivos fuera de la raíz de 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 que se especifiquen rutasrelativoa 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

Respuesta4

Captura de pantalla

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

información relacionada