git rm
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>...Opções
Escolhendo a opção certa
Formas de remover um arquivo
O que acontece no disco e no Git
| Comando | No disco | No próximo commit |
|---|---|---|
rm file | Apagado | Continua lá até você preparar a exclusão |
git rm file | Apagado | Removido |
git rm --cached file | Mantido | Removido (o arquivo passa a não rastreado) |
Exemplos
Excluir um arquivo
git rm old.jsExclui old.js e prepara a exclusão.
Parar de rastrear
git rm --cached .envO 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
git rm --cached .envParar de rastreá-lo, mantê-lo no disco
echo ".env" >> .gitignoreIgnorá-lo daqui em diante
git add .gitignorePreparar a regra de ignorar
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
Prepare a exclusão com git rm <file> ou git add <file> e depois faça o commit.
Antes do commit: git restore --staged --worktree <file>. Depois: git restore --source=<commit> <file>.
Não. Commits passados o mantêm; só o próximo commit o deixa de fora.