Renomeando arquivos no Git do jeito certo
Você já tentou renomear um arquivo nos seus projetos e teve dificuldade adicionar o ajuste em um commit? Isso não acontece só com você. Nessa colinha você vai aprender a renomear os seus arquivos em projetos git da forma correta para evitar dores de cabeça.
O problema de renomear um arquivo sem usar o git
Vamos dizer que você decidiu renomear um arquivo e, por questão de simplicidade você decide fazer isso na interface de pasta mesmo (ou usando o comando mv
no terminal). Depois disso você quer fazer o commit da alteração de nomes e ao rodar o git status
você se depara com essa situação:
Se você renomeia o arquivo sem usar o Git, o Git “se perde” e acha que o arquivo original foi apagado e um arquivo novo foi criado como mostrado na imagem acima. Por causa desse comportamento, você acaba tendo que obrigatoriamente fazer dois passos para commitar a alteração no nome:
- Adicionar o arquivo deletado;
- Adicionar o arquivo novo.
Para piorar, não é possível adicionar um arquivo “deletado” sem usar explicitamente o nome desse arquivo, o que torna esse processo todo ainda mais tedioso, pra não mencionar a esquisitice da frase “adicionar um arquivo deletado”.
Vamos dizer que você perseverou, adicionou o arquivo deletado e adicionou o arquivo novo e mais uma vez você roda um git status
, e ai o git entende que foi uma alteração no nome do arquivo, veja:
Essa é uma solução relativamente tranquila se você não precisa fazer isso com frequência, mas existe uma solução melhor.
Renomeando um arquivo no git do jeito certo
Para começar é necessário resistir ao impulso de renomear o arquivo usando a interface e passar a usar o comando git mv
. Usando o mesmo exemplo do caso acima, onde renomeamos o arquivo books.md
para book.md
, o comando fica assim:
git mv books.md book.md
O resultado de usar apenas um comando é o seguinte:
- Renomear o arquivo;
- Adicionar a mudança de nome em staging.
Depois disso você pode seguir o fluxo normal de commits e fazer o commit dessa alteração.
Recapitulando
Não use a interface para renomear os arquivos nos seus projetos Git, use o comando git mv
para fazer isso e já adicionar essa mudança em staging para um commit.