git mv

Snapshots básicos

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>
[ ] opcional| ou<arg> valor a substituir... repetível--flag opção

Exemplos

Renomear um arquivo

git mv app.js cart.js

Renomeia o arquivo e prepara a renomeação.


Mover para uma pasta

git mv cart.js src/cart.js

Move o arquivo para uma pasta existente.


Histórico após uma renomeação

git log --follow cart.js

Segue o histórico para trás através da renomeação.

Exemplos de fluxos de trabalho

1
git mv app.js cart.js

Renomear e preparar

2
git status

Mostra "renamed: app.js -> cart.js"

3
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

A:

Não diretamente: ele compara o conteúdo entre commits e detecta a renomeação.

A:

Sim: git mv src lib renomeia a pasta e todos os arquivos dela.