Curso
Ao trabalhar em um projeto Git complexo, é fácil perder de vista quais arquivos foram modificados, preparados (staged) ou ainda estão sem rastreamento. É aí que entra o git status. Esse comando essencial do Git oferece um retrato claro e completo do estado atual do repositório — destacando quais arquivos mudaram, o que está pronto para commit e o que ainda precisa de atenção.
Seja para resolver conflitos de merge, revisar mudanças já preparadas ou garantir que nada ficou de fora antes de um commit, o git status dá a visibilidade necessária para você se manter organizado.
Neste guia, vou explicar cada seção da saída do git status e apresentar personalizações avançadas, ajudando você a ter mais controle sobre o seu fluxo de versionamento.
O que é o Git status?
O comando git status fornece um resumo em tempo real do estado do seu repositório Git. Especificamente, ele compara o diretório de trabalho (seus arquivos locais) e a área de stage (também chamada de index) com o último snapshot commitado. Assim, você vê quais arquivos foram modificados, quais mudanças estão em stage e prontas para commit e quais arquivos novos permanecem sem rastreamento.
Ao rodar git status, desenvolvedores conseguem verificar se as mudanças certas estão sendo colocadas em stage ou commitadas, capturar edições esquecidas e evitar introduzir atualizações incompletas. Isso é especialmente valioso ao gerenciar múltiplas branches ou resolver conflitos de merge, pois oferece um feedback preciso sobre o que o Git está rastreando — e o que não está.
Entender como o git status reflete a interação entre a working tree, a área de stage e o histórico do repositório é essencial para usar o Git com eficácia e evitar erros comuns.

O diagrama acima ilustra a relação entre o diretório de trabalho, a área de stage e o repositório (histórico de commits) — e como o git status entra nessa história:
- Mudanças não preparadas (unstaged) (arquivos modificados no diretório de trabalho) aparecem como "Changes not staged for commit".
- Mudanças em stage (arquivos adicionados ao index com
git add) aparecem como "Changes to be committed". - Arquivos sem rastreamento (untracked) (arquivos novos que o Git ainda não conhece) também são listados, sugerindo que você os adicione ou ignore.
- Se você estiver no meio de um merge, o
git statustambém informa sobre conflitos e quais passos tomar em seguida.
Exemplo de saída do git status:
$ git status
On branch feature/login
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: src/auth.js
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: src/utils.js
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/new-feature.js
Para uma visão mais ampla do Git e seu papel no controle de versão, confira este guia completo sobre Git.
Aprenda hoje os fundamentos do Git
Como usar o Git status
Aqui vai um passo a passo para aproveitar o git status com eficiência no seu fluxo de trabalho.
Se você ainda não configurou o Git, este guia de configuração mostra a instalação e a configuração inicial em diferentes sistemas.
Uso básico do git status
- Abra seu terminal:
Use seu terminal ou interface de linha de comando preferida. Assim você executa comandos do Git e vê o estado do repositório em tempo real.
- Navegue até a pasta do projeto:
Use o comando cd para ir até a pasta onde está o seu projeto Git.
cd /path/to/your/project
- Execute o
git status:
Dentro da pasta do projeto, rode o comando abaixo.
git status
Como vimos, o Git retorna uma saída que geralmente inclui:
- O nome da branch atual.
- Uma lista de mudanças em stage, prontas para commit.
- Uma lista de arquivos modificados, mas ainda sem stage.
- Quaisquer arquivos sem rastreamento — arquivos novos que ainda não foram adicionados ao Git.
Usando o formato curto
Se você precisa de um retrato rápido sem muitos detalhes, o formato curto é seu aliado:
git status --short
Essa visão concisa lista cada arquivo em uma linha com símbolos de status — ótima para escanear por uma mudança específica ou integrar o comando em um script.
Exemplo de saída:
M index.html
A new-script.js
?? temp.txt
Como interpretar a saída:
- O primeiro caractere indica o status na área de stage.
- O segundo caractere indica o status no diretório de trabalho.
|
Código |
Significado |
|
M |
Modificado |
|
A |
Adicionado |
|
D |
Excluído |
|
?? |
Arquivo sem rastreamento |
|
MM |
Modificado em ambos os estágios |
|
AM |
Adicionado e depois modificado |
Entendendo a opção -u no git status
A opção -u (forma curta de --untracked-files) permite controlar como os arquivos sem rastreamento aparecem na saída — algo útil em projetos com muitos arquivos gerados. Veja o que cada modo significa:
normal(padrão)
Mostra arquivos sem rastreamento em um formato padrão e econômico em espaço.
Exemplo:
git status -u normal
Esse é o comportamento padrão que a maioria dos desenvolvedores vê ao rodar git status.
all
Lista todos os arquivos sem rastreamento — até os ignorados por padrão.
Exemplo:
git status -u all
Esse modo oferece visibilidade total, útil para depurar geração de arquivos ou revisar o que está sendo excluído via .gitignore.
-
no
Oculta arquivos sem rastreamento para você focar somente nas mudanças de arquivos já rastreados pelo Git.
Exemplo:
git status -u no
Em um dos meus projetos maiores — uma aplicação Node.js com um processo de build complexo — a saída do git status ficava poluída por arquivos temporários, caches e artefatos de build. Usar a opção -u no me permitiu focar exclusivamente nas mudanças de arquivos rastreados, sem distrações de arquivos temporários ou gerados automaticamente.
Personalizando a saída com --porcelain
Para scripts ou automação, saída previsível é essencial. A opção --porcelain fornece um formato limpo, estável e legível por máquina do git status, ideal para ferramentas customizadas ou pipelines de CI/CD:
git status --porcelain
Esse modo imita o formato curto (--short), mas garante consistência entre versões e configurações do Git. Diferente do git status padrão, que pode incluir quebras de linha extras, dicas ou cores dependendo das preferências do usuário, o --porcelain remove toda essa formatação — garantindo que scripts consigam analisar a saída com confiabilidade.
Próximos passos após rodar o Git status
Depois de rodar o git status e analisar a saída, é hora de decidir o próximo passo — colocar arquivos em stage, fazer commits ou limpar seu diretório de trabalho. Veja como proceder.
Colocando arquivos em stage para commit
O stage prepara suas mudanças para entrarem no próximo commit. Você pode colocar arquivos individuais em stage ou tudo de uma vez.
- Colocar um arquivo específico em stage:
Use quando quiser controle preciso sobre o que será commitado.
git add <file-name>
- Colocar todas as mudanças em stage:
Inclui arquivos modificados e novos na pasta atual.
git add .
- Colocar apenas mudanças de arquivos já rastreados (exclui novos untracked):
git add -u
Recomendo revisar as mudanças com git status ou git diff com cuidado antes de colocar em stage, para evitar incluir arquivos indesejados. Combinar o git status com o comando git diff dá uma visão ainda mais profunda do que mudou nos seus arquivos.
Fazendo commits
Depois de colocar as mudanças em stage, o próximo passo é criar um commit. Uma mensagem de commit clara e descritiva não só registra o que mudou, mas também por quê a mudança foi feita — facilitando entender a história do projeto ao longo do tempo.
git commit -m "Describe your changes here"
Boas práticas para mensagens de commit:
- Use o modo imperativo (ex.: "Corrige bug de login", e não "Corrigido bug de login").
- Mantenha a linha de resumo com até 50 caracteres quando possível.
- Se necessário, use mensagem em múltiplas linhas (
git commitsem-m) para separar o resumo da explicação detalhada.
Aprendi que gastar um minuto extra para escrever uma boa mensagem de commit pode economizar horas em revisões ou depuração depois. Após a revisão das mudanças, considere fazer squash dos seus commits para deixar o histórico do Git mais limpo.
Lidando com arquivos sem rastreamento
Arquivos sem rastreamento podem poluir a saída do git status, especialmente em projetos com artefatos de build, logs ou pastas de dependências. Se houver arquivos ou diretórios que você nunca pretende rastrear, exclua-os adicionando entradas a um arquivo .gitignore na raiz do repositório.
# Ignore pastas de dependências e arquivos de log
node_modules/
*.log
# Ignore arquivos de sistema
.DS_Store
Thumbs.db
Isso garante que apenas os arquivos relevantes fiquem no seu repositório, mantendo a saída do git status limpa e objetiva. Quando precisar remover arquivos sem rastreamento restantes do seu diretório de trabalho, o git clean também é uma ferramenta interessante.
Revisando o status com frequência
Executar o git status com frequência é um hábito simples e poderoso para manter um fluxo de desenvolvimento limpo e controlado. Você evita erros comuns — como commitar mudanças incompletas ou ignorar arquivos sem rastreamento — ao checar regularmente o status do diretório de trabalho e da área de stage, especialmente antes de commits, trocas de branch ou merges.
Hoje, incorporei esse passo na minha rotina diária, o que reduziu drasticamente erros no meu histórico de commits.
Como resolver problemas comuns do Git status
Mesmo sendo simples, às vezes o git status pode gerar uma saída grande ou confusa. Aqui estão alguns problemas comuns e como lidar com eles.
Arquivos sem rastreamento indesejados
Em projetos grandes, especialmente com várias ferramentas de build, você pode ver muitos arquivos que nunca pretendeu rastrear. Se isso acontecer, verifique seu .gitignore e, se necessário, remova-os do rastreamento com:
git rm --cached <file-name>
Após atualizar seu .gitignore e usar git rm --cached, rode git status novamente para confirmar que o arquivo não está mais sendo rastreado ou aparecendo sem necessidade.
Saída excessiva
Em projetos com muitos arquivos — especialmente os que geram logs, caches ou assets temporários — a saída do git status pode ficar barulhenta e difícil de escanear. Isso dificulta focar nas mudanças importantes que precisam de atenção.
Nesse caso, você pode exibir um resumo conciso, com uma linha por arquivo:
git status --short
Ou ocultar completamente os untracked da saída:
git status -u no
Em conjunto, essas opções deixam o git status mais focado e fácil de digerir — especialmente em bases de código grandes ou fluxos automatizados.
Conclusão
Em resumo, o git status é uma ferramenta indispensável que oferece uma visão, em tempo real, da saúde do seu repositório. Ao dominar a visão padrão, o formato curto e opções avançadas como a flag -u, você otimiza seu fluxo de trabalho com Git e evita armadilhas comuns. Experimente esses modos nos seus projetos e veja como a clareza na gestão de mudanças acelera seu desenvolvimento.
Se você está começando no Git, entender o git status fica ainda mais poderoso quando combinado com o git init, o comando que inicializa repositórios. Se ainda não viu, confira meu tutorial de Git Init para aprender como criar um repositório do zero.
E, se você quer ir além no Git, explore estes cursos da DataCamp:
- Intermediate Git – Aprimore suas habilidades com técnicas de branching, merge e resolução de conflitos.
- GitHub Foundations – Aprenda a integrar o Git com o GitHub para projetos colaborativos.
Boas práticas de código — e que você fique sempre em sintonia com seu repositório!
Aprenda hoje os fundamentos do Git
FAQs
Qual é a diferença entre git status e git diff?
Enquanto o git status mostra um resumo das mudanças, o git diff exibe as diferenças de conteúdo entre os arquivos, oferecendo uma comparação mais detalhada.
Posso personalizar a saída do git status?
Sim. Com opções como --short, --porcelain e -u, você pode deixar a saída mais concisa ou amigável para scripts, conforme sua necessidade.
Qual a diferença entre mudanças staged e unstaged no Git?
Mudanças em stage foram adicionadas ao index e estão prontas para commit; mudanças não preparadas (unstaged) continuam no diretório de trabalho e ainda não foram marcadas para commit.
Como ignorar arquivos que aparecem no git status?
Você pode adicionar padrões de arquivos a um .gitignore para evitar que certos arquivos (como logs ou artefatos de build) apareçam como untracked no git status.
Por que arquivos untracked continuam aparecendo no git status?
Arquivos sem rastreamento são aqueles que não foram adicionados ao index do Git. Eles podem continuar aparecendo se não forem ignorados explicitamente no .gitignore ou colocados em stage com git add.
Como o git status ajuda a evitar commits ruins?
Ao rodar git status antes de commitar, você revisa todas as mudanças em stage e fora de stage, garantindo que nada seja esquecido ou que algo incompleto não seja commitado por engano.
O git status é útil para resolver conflitos de merge?
Com certeza. O git status destaca conflitos e orienta você sobre como resolvê-los antes de finalizar um merge.
Com que frequência devo usar o git status no meu fluxo de trabalho?
Com frequência! Usar o git status antes de colocar em stage, commitar ou trocar de branch ajuda você a se organizar e evitar erros custosos.
Sou engenheiro de dados e criador de comunidades que trabalha com pipelines de dados, nuvem e ferramentas de IA, além de escrever tutoriais práticos e de alto impacto para o DataCamp e desenvolvedores iniciantes.

