git status -> Mostra os arquivos que serão adicionados (testados) nos subdiretórios

88

Digamos que eu inicie um repositório git em uma pasta e tenha vários subdiretórios nele.

Tenho vários padrões de globbing .gitignorepara excluir arquivos nos subdiretórios. No entanto, quando faço isso git status antes de testar qualquer coisa , git status mostra apenas os nomes das subpastas que serão adicionadas, sem ser específico sobre quais arquivos em cada subdiretório serão adicionados (testados) se eu fizer isso git add ..

Curiosamente, porém, git statusé explícito sobre os arquivos que serão confirmados após eu preparar os arquivos com git add ..

Existe alguma maneira de pedir git statuspara ser explícito sobre os arquivos para os arquivos que seriam testados ?

Amelio Vazquez-Reina
fonte

Respostas:

147

Tentar:

git status -u

ou a forma longa:

git status --untracked-files

que mostrará arquivos individuais em diretórios não rastreados.

Aqui está a descrição detalhada da -uopção da página do manual git-status :

-u[<mode>]
--untracked-files[=<mode>]

Mostra arquivos não rastreados.

O parâmetro mode é opcional (o padrão é all) e é usado para especificar o tratamento de arquivos não rastreados; quando -unão é usado, o padrão é normal, ou seja, mostra arquivos e diretórios não rastreados.

As opções possíveis são:

  • no - Não mostrar arquivos não rastreados
  • normal - Mostra arquivos e diretórios não rastreados
  • all - Também mostra arquivos individuais em diretórios não rastreados.

O padrão pode ser alterado usando a status.showUntrackedFilesvariável de configuração documentada em git-config (1) .

Penghe Geng
fonte
9

Você pode simplesmente usar

git add --dry-run .

na raiz do seu repositório, que fornece uma lista de qualquer arquivo em qualquer subdiretório que seria adicionado durante a análise .gitignore.

cweigel
fonte
1

Que tal colocar um .gitignorearquivo em seus subdiretórios, ao longo da linha de

# Ignore everything in this directory
*
# Except these file
!.gitignore
!file1
!file2
!file3
Adrian Cornish
fonte
Não tenho nada no meu .gitignoreque se pareça com o que você postou (ou seja, ignorando diretórios ou subdiretórios com exceções). Além disso, por que isso importaria? A propósito, git statusretorna a lista de arquivos que seriam confirmados corretamente após o teste com git add ..
Amelio Vazquez-Reina
1
Eu sei, você não. Remova o diretório da raiz .gitignoree adicione-o .gitignoreao seu subdiretório - você pode ter mais de um. Eles se aninham
Adrian Cornish,
-1

use o comando git git ls-files -o para listar arquivos não rastreados

em vez disso -o use -c --cached Mostra os arquivos em cache na saída (padrão)

-d --deleted Mostra os arquivos excluídos na saída

-m --modified Mostra os arquivos modificados na saída

Pradeep Pandey
fonte
Esta questão é específica para mostrar quais arquivos serão adicionados, enquanto contabilizando .gitignore. Sua resposta ignora .gitignore.
Jared