é possível `git status` apenas arquivos modificados?

173

É possível git statuse mostrar apenas arquivos modificados?

O problema é que tenho muitos arquivos temporários que não quero confirmar ou fazer gitignore no momento e não consigo rolar para cima. Eu tenho um limite de rolagem definido no Ubuntu.

chrisjlee
fonte
1
Como você tem um limite de rolagem? Por padrão, git statuschamará o pager.
Lily Ballard
Desculpe, o limite de rolagem está definido para 512 linhas na minha máquina. Eu acho que eu poderia mudar isso; mas preferiria um comando de uma linha para exibir apenas os arquivos modificados no status, porque o GD / imagecache eventualmente gerará ainda mais arquivos.
Chrisjlee #
1
Certo ... meu argumento é que o pager não usa o scrollback do seu terminal.
Lily Ballard
Algo errado com apenas grepping para o que você achar interessante? Use --shortou --porcelainpara obter versões de uma linha do status.
Torek #
2
Mais um ponto, com base na sugestão de uso git ls-files -m: com quais modificações você se importa, em etapas, em etapas ou em ambas?
Torek 04/04/12

Respostas:

268

Não é possível fazer isso git status, mas você pode usar git ls-files -mpara mostrar todos os arquivos modificados.

Lily Ballard
fonte
6
Para que outros saibam, isso mostrará apenas arquivos que foram modificados sem ainda serem testados.
Gerry
11
Embora essa seja a resposta aceita, ela possui informações imprecisas. Você pode "'status modificado pelo git' apenas arquivos modificados", git status | grep modifiedcomo indica o usuário23186 na resposta.
K. Alan Bates
9
Para mim, git ls-files -mnão está mostrando nada, mas git status | grep modifiedestá funcionando.
Sandeepan Nath
1
Como outros já apontaram, isso mostra apenas arquivos não estágios. Se você quer mostrar tanto unstaged e encenado arquivos, esta é a melhor resposta que eu vi: stackoverflow.com/a/39994894/452587
thdoan
1
@ thdoan Há várias opções para mostrar arquivos em estágios, embora essa pergunta em particular pareça excluir explicitamente os arquivos em estágios. git diff --name-only --diff-filter=M HEADmostraria apenas os arquivos modificados para os estágios e não, embora você deva verificar os documentos --diff-filterpara ver quais outros tipos de filtro você deseja adicionar.
Lily Ballard
57

Parece que git status -unoirá mostrar apenas os arquivos que o git está rastreando, sem mostrar mais nada no diretório. Não é exatamente o que você pediu, mas talvez faça o mesmo (obtendo uma lista de arquivos legíveis que o git rastreia).

TomNysetvold
fonte
1
git status -u nonão mostra (1) arquivos rastreados que são modificados, nem (2) arquivos rastreados que são preparados. Eu verifiquei isso com as versões 1.8.5.2 e 1.9.4 do git.
Mxxk 12/09/2014
2
@ TomNysetvold, você pode realmente querer dizer git status -uno( stackoverflow.com/questions/7008546/… )
mxxk
29
git status -s | awk '{if ($1 == "M") print $2}'
Carl Bäckström
fonte
3
Ouawk '$1 == "M" { print $2 }'
Calpau
29

Para arquivos modificados:

git status | grep modified:
Lança
fonte
1
Tão útil que eu criei um alias para isso:git config --global alias.modified '!git status | grep modified:'
Richard Parnaby-King
15

git diff --name-only --diff-filter=M

ZeroGraviti
fonte
2
Eu recomendo esses filtros: git diff --cached --name-only --diff-filter=ACMRque contém arquivos adicionados, copiados, modificados e renomeados.
Qwertzguy
7

git diff --name-only funciona também

mpelzsherman
fonte
3

Eu estava procurando a mesma informação e encontrei a seguir fornece arquivos modificados:

git status -uno
Tectrendz
fonte
2
git status -uno --porcelainacrescenta saída agradável para analisar roteiro
pprzemek
3

Você pode usar

$ git status -uno 

para listar apenas arquivos modificados.

Karthik
fonte
3

O problema é que tenho muitos arquivos temporários que não quero confirmar ou fazer gitignore no momento e não consigo rolar para cima.

Embora isso possa não responder diretamente à questão de listar apenas arquivos modificados, pode ajudar a limitar o número de arquivos listados.

Você pode passar um caminho para git statuslimitar a saída para uma pasta específica no repositório.

Por exemplo:

git status app
git status spec
git status src/components
BillFienberg
fonte
2

Para listar os arquivos modificados, use:

git ls-files -m

Se você quiser apenas o nome da base (sem caminho), poderá canalizar cada resultado para o comando basename usando xargs, linha por linha:

git ls-files -m | xargs -L 1 basename
briggySmalls
fonte
1

Eu uso este comando:

$ git status -uno -sb

E a saída é assim:

## master...origin/master
 M GNUmakefile
 M include/mp4v2/project.h
SebMa
fonte
0

Eu uso git cola. É um cliente de interface do usuário simples e elegante que mostra os arquivos modificados e fornece uma imagem diferente das alterações que você fez.

git colafornece uma GUI na qual você pode visualizar quais arquivos você modificou, quais preparou e até mesmo aqueles que não acompanha. Sua pergunta era usar apenas o status git, acredito, mas achei que o git cola pode ajudar quando isso e outras coisas também. Verifique esta página da Web em mais informações: git-cola.github.com/screenshots.html

n_x_l
fonte
1
Você poderia fornecer como isso se relaciona com a minha resposta, dado que eu não estou familiarizado com este Git Cola. por exemplo, capturas de tela ou mais detalhes?
Chrisjlee #
é por isso que foi rebaixado? :) De qualquer forma, o git cola fornece uma GUI onde você pode visualizar os arquivos que modificou, os que preparou e até os que não acompanha. Sua pergunta era usar apenas o status git, acredito, mas achei que o git cola pode ajudar quando isso e outras coisas também. Marque esta página web a partir de mais informação: git-cola.github.com/screenshots.html
n_x_l
Como mudar o idioma da interface da cola?
ziyuang
0

Se você quiser listar os arquivos modificados, faça o seguinte:

git log -n1 --oneline --name-status | grep '^M'

David Hernandez
fonte
0

Para listar todos os arquivos modificados, use:

git show --stat --oneline HEAD
Fayaz
fonte
0

Todas ótimas respostas; apenas FEI, "git checkout" (alternando para ou no mesmo ramo) parece mostrar apenas arquivos modificados.

user1172173
fonte
0

SO: windows

O comando a seguir exibirá todas as linhas que contêm "modificado:" , "renomeado:" ou "novo arquivo:"

git status | findstr "modified: renamed: new file:"

Se você deseja especificar o tipo de arquivo: (por exemplo *.py *.ini)

git status *.py *.ini | findstr "modified: renamed: new file:"

Se você acha que é demais digitar muito:

  1. crie um arquivo em lotes (por exemplo st.bat:)

  2. escreva o conteúdo da seguinte forma:

    @echo off
    :: st.bat  (this line doesn't necessarily. ( just let you know the scripts name.))
    git status %~1 | findstr "modified: renamed: new file:"
    
  3. adicione o caminho do ambiente que contém seu arquivo em lotes. ( st.bat)

  4. uso

    st.bat "*.py *.ini"
    

    (nota: se digite> 1, adicione o ponto e vírgula)

OS: LINUX

como @Lance diz que você pode tentar

git status | grep modified:

Carson
fonte