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:

imagem mostrando o arquivo deletado e um arquivo novo criado

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:

  1. Adicionar o arquivo deletado;
  2. 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:

imagem mostrando o resultado de git status após adicionar o arquivo e o git entendendo que o arquivo foi nomeado

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:

  1. Renomear o arquivo;
  2. 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.

GitFichas