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

93

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

    
por Anonymous 28.05.2012 / 15:12

4 respostas

99

Se você quiser listar todos os arquivos de uma ramificação específica, por exemplo, master :

git ls-tree -r master --name-only

A opção -r permitirá recorrer aos subdiretórios e imprimir cada arquivo atualmente sob controle de versão. Você também pode especificar HEAD em vez de master para obter a lista de qualquer outro ramo em que você esteja.

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

git log --pretty=format: --name-status | cut -f2- | sort -u
    
por 28.05.2012 / 15:19
50

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

Fonte: link

    
por 27.11.2012 / 10:36
3

git ls-files somente imprimirá 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 da raiz do git e esse comando simples não funcionará mais.

Em suma, 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 especificados relativos ao seu diretório atual (shell), isso faz a tarefa:

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

e no exemplo acima, imprimiria

README
../../../etc/ssh/sshd_config
    
por 16.10.2015 / 08:23
0

Você também pode usar o visualizador de repositório interativo gitk .

    
por 12.03.2018 / 20:16