Respostas:
Se você deseja listar todos os arquivos para um ramo específico, por exemplo master
:
git ls-tree -r master --name-only
A -r
opção permitirá recursar em subdiretórios e imprimir cada arquivo atualmente sob controle de versão. Você também pode especificar, em HEAD
vez de master
obter a lista para qualquer outro ramo em que possa estar.
Se você deseja obter uma lista de todos os arquivos que já existiram, consulte aqui :
git log --pretty = formato: - somente nome - filtro-dif = = A | classificar -u
git ls-tree -r master --name-only
faria o mesmo que a primeira opção, sem precisar do cut
. Ah, e você pode especificar, em HEAD
vez de, master
se deseja apenas essa lista para qualquer ramo em que esteja atualmente.
-
? Isso faz com que algumas linhas adicionais mostrem alguns arquivos em uma segunda coluna que são repetidos a partir da primeira.
O git ls-files
comando fará o que você precisa.
Fonte: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-files
em vez de git ls-tree -r master --name-only
é certamente mais simples.
git-ls-files
binário. Existe o git
binário com o ls-files
comando O link para a documentação está correto no conteúdo, mas tecnicamente para um binário desatualizado.
git-commit
, git-init
, git-ls-files
, etc. mesmo que os programas são realmente Subcomandos. Nunca houve um git-ls-files
binário, provavelmente. O raciocínio é que ele é consistente com o mecanismo de subcomando externo, que permite registrar um git foo
comando escrevendo um git-foo
binário.
git ls-files
imprimirá apenas arquivos no diretório de trabalho atual.
Se, por exemplo, você tiver um repositório git para dotfiles ( core.worktree = /
), terá arquivos fora da raiz git e esse comando simples não funcionará mais.
Em resumo, 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ê desejar caminhos especificados em relação ao diretório atual (shell), isso fará o trabalho:
alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'
e no exemplo acima, ele imprimiria
README
../../../etc/ssh/sshd_config
git ls-files
mostra tudo no diretório atual e abaixo. Apenas não mostra os arquivos que foram excluídos no repositório.
Você também pode usar o gitk
visualizador de repositório interativo.
Por favor, dê uma olhada na imagem, no lado direito, existem duas opções de patch e Tree. Se você selecionar a árvore, poderá visualizar a estrutura de pastas para cada confirmação.