Git - Lista todos os arquivos atualmente sob controle de origem?

Git - Lista todos os arquivos atualmente sob controle de origem?

Existe uma maneira de listar todos os arquivos atualmente sob controle de origem no git? (Não apenas aqueles que foram modificados).

Responder1

Se você deseja listar todos os arquivos de um branch específico, por exemplo master:

git ls-tree-r mestre --somente nome

A -ropção permitirá que ele recorra aos subdiretórios e imprima cada arquivo atualmente sob controle de versão. Você também pode especificar HEADem vez de masterobter a lista de qualquer outro ramo em que possa estar.

Se você deseja obter uma lista de todos os arquivos que já existiram,Veja aqui:

registro do git--pretty=formato: --name-only --diff-filter=A | classificar -você

Responder2

O git ls-filescomando fará o que você precisa.

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

Responder3

git ls-filesimprimirá apenas arquivos no diretório de trabalho atual.

Se, por exemplo, você tiver um repositório git para dotfiles ( core.worktree = /), então você terá arquivos fora do git root e esse comando simples não funcionará mais.

Resumindo, isso funcionará:

git --git-dir "`git rev-parse --git-dir`" \
    -C "`git config core.worktree || pwd`" \
    ls-files

Exemplo:

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 você quiser caminhos especificadosrelativopara o seu diretório atual (shell), isso resolve o problema:

alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'

e no exemplo acima, seria impresso

README
../../../etc/ssh/sshd_config

Responder4

Captura de tela

Por favor, dê uma olhada na imagem, no lado direito existem duas opções patch e Tree. Se você selecionar árvore, poderá visualizar a estrutura de pastas de cada commit.

informação relacionada