git mv
Move ou renomeia um arquivo
O comando 'git mv' renomeia ou move um arquivo rastreado e prepara a mudança num só passo. É o mesmo que renomear o arquivo você mesmo e executar git add no nome antigo e no novo. O Git não guarda renomeações: ele as detecta comparando conteúdo, então git log --follow ainda mostra o histórico do arquivo através da renomeação.
Sinopse
git mv [-v] [-f] [-n] [-k] <source> <destination>Exemplos
Renomear um arquivo
git mv app.js cart.jsRenomeia o arquivo e prepara a renomeação.
Mover para uma pasta
git mv cart.js src/cart.jsMove o arquivo para uma pasta existente.
Histórico após uma renomeação
git log --follow cart.jsSegue o histórico para trás através da renomeação.
Exemplos de fluxos de trabalho
git mv app.js cart.jsRenomear e preparar
git statusMostra "renamed: app.js -> cart.js"
git commit -m "Rename app.js to cart.js"Commit
Solução de problemas
fatal: destination exists
Causa: Já existe um arquivo com o novo nome
Escolha outro nome, ou use -f para sobrescrevê-lo
fatal: not under version control
Causa: O arquivo de origem não é rastreado
Renomeie-o normalmente, ou faça git add antes
Dicas e armadilhas
Boas práticas
- ✓Faça o commit de uma renomeação separado de grandes edições, para o Git reconhecê-la como renomeação.
- ✓Use git log --follow <file> para ver o histórico através das renomeações.
Erros comuns
- ✗Renomear no explorador de arquivos e commitar só o arquivo novo — o antigo continua rastreado.
- ✗Mudar só maiúsculas/minúsculas no Windows ou macOS sem git mv, o que o Git pode não perceber.
- ✗Renomear e editar muito um arquivo no mesmo commit, de modo que o Git não detecta mais a renomeação.
Perguntas frequentes
Não diretamente: ele compara o conteúdo entre commits e detecta a renomeação.
Sim: git mv src lib renomeia a pasta e todos os arquivos dela.