Use git ls-árvore -r CABEÇA --name-somente se você quer arquivos de lista do ramo atual
Ramast
3
Por que os diretórios não estão listados?
Shuzheng
13
@NicolasLykkeIversen - gitnão versão diretórios diretamente. Em vez disso, armazena arquivos e seus caminhos. ls-treeproduzirá todos os arquivos com versão. Para entender melhor essa distinção, tente preparar um diretório vazio para git. O diretório vazio nunca será exibido nas alterações faseadas. A única maneira de criar a versão de um diretório vazio é, na verdade, fazer a versão de um arquivo no diretório. Para casos de uso em que você precisa de um diretório de espaço reservado vazio no controle de versão, é possível criar um arquivo fictício no diretório e fazer a versão. Espero que a explicação seja clara.
Tuxdude 31/03
2
Observe ls-tree masterque não mostra os arquivos rastreados na área de preparação.
Nn0p
É possível mostrar apenas o diretório de nível superior se ele incluir muitos subdiretórios e arquivos?
Blaszard 25/10
191
Os arquivos gerenciados pelo git são mostrados por git ls-files. Confira sua página de manual.
Isso parece mostrar apenas os arquivos no diretório ou abaixo dele.
Lyle Z
11
Se importa se eu editar isso para incluir as seções relevantes da página de manual?
Nathan Basanese
1
@ NathanBasanese talvez você possa adicionar outra resposta com essas informações.
José Castro
@LyleZ Talvez isso se destina a estar em consonância com ls... ouls -R
flow2k
1
@LyleZ Além disso, esse comportamento é o mesmo com git ls-tree- é relativo ao pwd.
flow2k
18
A resposta aceita mostra apenas arquivos na árvore do diretório atual. Para mostrar todos os arquivos rastreados que foram confirmados (na ramificação atual), use
git ls-tree --full-tree --name-only -r HEAD
--full-tree faz com que o comando seja executado como se você estivesse no diretório raiz do repositório.
-rse repete em subdiretórios. Combinado com --full-tree, isso fornece todos os arquivos rastreados e confirmados.
--name-only remove informações de permissão / SHA para quando você deseja apenas os caminhos do arquivo.
HEADespecifica para qual filial você deseja a lista de arquivos confirmados rastreados. Você pode alterar isso para masterou qualquer outro nome de filial, mas HEADé o commit que você efetuou check-out agora.
O glralias desde parecia um pouco estranho, então eu fiz uma versão mais consistente com o formato do primeiro alias que você forneceu: alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'. Testado com o git version 2.20.1Debian 10.
Respostas:
Se você deseja listar todos os arquivos que estão sendo rastreados atualmente no ramo
master
, você pode usar este comando:Se você deseja uma lista de arquivos que já existiram (por exemplo, incluindo arquivos excluídos):
fonte
git
não versão diretórios diretamente. Em vez disso, armazena arquivos e seus caminhos.ls-tree
produzirá todos os arquivos com versão. Para entender melhor essa distinção, tente preparar um diretório vazio paragit
. O diretório vazio nunca será exibido nas alterações faseadas. A única maneira de criar a versão de um diretório vazio é, na verdade, fazer a versão de um arquivo no diretório. Para casos de uso em que você precisa de um diretório de espaço reservado vazio no controle de versão, é possível criar um arquivo fictício no diretório e fazer a versão. Espero que a explicação seja clara.ls-tree master
que não mostra os arquivos rastreados na área de preparação.Os arquivos gerenciados pelo git são mostrados por
git ls-files
. Confira sua página de manual.fonte
ls
... ouls -R
git ls-tree
- é relativo aopwd
.A resposta aceita mostra apenas arquivos na árvore do diretório atual. Para mostrar todos os arquivos rastreados que foram confirmados (na ramificação atual), use
--full-tree
faz com que o comando seja executado como se você estivesse no diretório raiz do repositório.-r
se repete em subdiretórios. Combinado com--full-tree
, isso fornece todos os arquivos rastreados e confirmados.--name-only
remove informações de permissão / SHA para quando você deseja apenas os caminhos do arquivo.HEAD
especifica para qual filial você deseja a lista de arquivos confirmados rastreados. Você pode alterar isso paramaster
ou qualquer outro nome de filial, masHEAD
é o commit que você efetuou check-out agora.Este é o método da resposta aceita à pergunta duplicada ~ https://stackoverflow.com/a/8533413/4880003 .
fonte
Você pode querer uma saída colorida com isso.
Eu uso esse one-liner para listar os arquivos e diretórios rastreados no diretório atual da ramificação atual:
Você pode querer adicioná-lo como um alias:
Se você deseja listar recursivamente os arquivos:
E um apelido:
fonte
glr
alias desde parecia um pouco estranho, então eu fiz uma versão mais consistente com o formato do primeiro alias que você forneceu:alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'
. Testado com ogit version 2.20.1
Debian 10.