git rm

Snapshots básicos

Remove arquivos do diretório de trabalho e da área de preparação


O comando 'git rm' exclui um arquivo rastreado e prepara a exclusão, para que o próximo commit não o contenha mais. Commits antigos mantêm o arquivo. Com --cached, o Git deixa de rastrear o arquivo mas o mantém no disco — a correção habitual para um arquivo commitado por engano. git rm se recusa a excluir um arquivo com alterações não commitadas, a menos que você adicione -f.

Sinopse

git rm [-f | --force] [-n] [-r] [--cached] [-q] [--] <pathspec>...
[ ] opcional| ou<arg> valor a substituir... repetível--flag opção

Opções

Clique em uma opção para expandir

Iniciante (2)

Remove o arquivo só da área de preparação. O arquivo fica no disco, não rastreado.

RecomendadoParar de rastrear um arquivo (p. ex. commitado por engano) sem excluí-lo

Exemplo

git rm --cached .env

Exclui mesmo que o arquivo tenha alterações não commitadas. Essas alterações se perdem.

Quando necessárioExclui alterações não commitadas junto com o arquivo — elas se perdem

Exemplo

git rm -f app.js

Escolhendo a opção certa

Formas de remover um arquivo

O que acontece no disco e no Git

ComandoNo discoNo próximo commit
rm fileApagadoContinua lá até você preparar a exclusão
git rm fileApagadoRemovido
git rm --cached fileMantidoRemovido (o arquivo passa a não rastreado)

Exemplos

Excluir um arquivo

git rm old.js

Exclui old.js e prepara a exclusão.


Parar de rastrear

git rm --cached .env

O Git esquece .env; o arquivo fica no disco.


Excluir uma pasta

git rm -r build/

Exclui uma pasta e seus arquivos rastreados.

Exemplos de fluxos de trabalho

1
git rm --cached .env

Parar de rastreá-lo, mantê-lo no disco

2
echo ".env" >> .gitignore

Ignorá-lo daqui em diante

3
git add .gitignore

Preparar a regra de ignorar

4
git commit -m "Stop tracking .env"

Commit

Solução de problemas

error: the following file has local modifications

Causa: O arquivo tem alterações não commitadas

Faça commit ou stash delas, use --cached para manter o arquivo, ou -f para descartá-las

fatal: not removing 'dir' recursively without -r

Causa: O caminho é uma pasta

Adicione -r: git rm -r dir

Um segredo ainda está no histórico

Causa: git rm só afeta commits futuros

Troque o segredo; reescrever o histórico exige uma ferramenta como git filter-repo

Dicas e armadilhas

Boas práticas

  • ✓Use git rm em vez de rm + git add: um passo só, nada esquecido.
  • ✓Adicione os arquivos não rastreados ao .gitignore logo depois de git rm --cached.
  • ✓Trate um segredo commitado como vazado: troque-o, mesmo depois de remover o arquivo.

Erros comuns

  • ✗Excluir um arquivo com rm simples e esquecer de preparar a exclusão.
  • ✗Usar git rm quando você só queria parar de rastrear: adicione --cached para manter o arquivo.
  • ✗Esperar que git rm apague um segredo do histórico — commits antigos ainda o contêm.

Perguntas frequentes

A:

Prepare a exclusão com git rm <file> ou git add <file> e depois faça o commit.

A:

Antes do commit: git restore --staged --worktree <file>. Depois: git restore --source=<commit> <file>.

A:

Não. Commits passados o mantêm; só o próximo commit o deixa de fora.