Como fazer git status mostrar apenas arquivos testados

86

Eu gostaria de obter uma lista apenas dos nomes de arquivos preparados. Não consigo encontrar a bandeira equivalente --name-onlypara o git statuscomando. Qual é uma boa alternativa?

A lista de arquivos será canalizada para php -l(verificador de sintaxe PHP lint).

Solução: o comando completo

git diff --name-only --cached | xargs -l php -l
Ward Bekker
fonte
3
Se você estiver executando esse comando manualmente, parece que você pode querer colocá-lo em um gancho de pré-confirmação. kernel.org/pub/software/scm/git/docs/githooks.html
MatrixFrog

Respostas:

129

Use git diff --name-only(com --cachedpara obter os arquivos de teste)

Ben Jackson
fonte
12

A resposta aceita não permitirá que você saiba que tipo de mudanças ocorreram.

Sim, se você não é um verificador de sintaxe, mas uma pessoa comum com um repositório cheio de arquivos não testados e ainda deseja saber o que acontecerá com os arquivos testados - há outro comando:

git status --short | grep '^[MARCD]'

o que leva a algo como:

M  dir/modified_file
A  dir/new_file
R  dir/renamed -> dir/renamed_to
C  dir/copied_file
D  dir/deleted_file

Obviamente, esses arquivos foram testados, e depois git commit:
deleted_fileserão excluídos,
new_fileserão adicionados,
renamed_filese tornarão um renamed_to.

Aqui está uma explicação da saída de formato curto: https://git-scm.com/docs/git-status#_short_format

coffman21
fonte
1. na minha versão (2.25.0.windows.1) há um espaço antes de "M" e "D". 2. Há também outro estado - "??" que não tenho certeza de como interpretar.
itsho
@itsho o espaço indica que não está encenado. Esta resposta está correta porque corresponde ao primeiro caractere da linha. Se o primeiro caractere for definido, é um arquivo testado. Se for um espaço, ele é ignorado.
Avner
1
Isso é gênio! - deve haver um sinalizador git para coisa semelhante
Norfeldt
3

Inspirado pela resposta de @ coffman21 , configurei o seguinte alias em meu.zshrc

alias gst="git status"
alias gst-staged="git status --short | grep '^\w'"
alias gst-unstaged="git status  --short | grep '^\W'"
alias gst-unstaged-tracked="git status  --short | grep '^\s'"
alias gst-untracked="git status --short | grep '^??'"

Pode ser útil para qualquer outra pessoa. Então, adicionando-o à pilha de respostas.

Norfeldt
fonte
para a coloração consistente você pode adicionar um .em grep, para colorir os 2 caracteres iniciais, como: grep '^\w.', grep '^\W.',grep '^\s.'
geekley
0

para ver arquivos de teste com mudanças de código

git diff --staged   

ou usando --cached que é sinônimo de --staged

git diff --cached

ou para ver apenas nomes de arquivos sem alterações de código

git diff --staged --name-only  

manual git-diff

velocidade
fonte