Substituindo informações do autor em mensagens de commit do Git

Se por algum motivo você precisar substituir o email do autor em mensagens de commit em um repositório Git basta utilizar o git-filter-repo. Essa ferramenta é um substituto para o comando filter-branch do Git e fornece diversas maneiras de reescrever o histórico de um repositório.

Aqui vou mostrar apenas um caso simples e comum de substituir o nome e email do autor nas mensagens de commit. Quem nunca esqueceu de configurar user.name ou user.email locais em um repositório e usou informações pessoais em projetos profissionais ou vice-versa?

Para instalar o git-filter-repo no Ubuntu:

sudo apt install -y git-filter-repo

Crie um arquivo de mapa no formato gitmailcap:

Novo Nome <novo@email.com> Antigo Nome <antigo@email.com>

Execute o comando:

git filter-repo --mailmap <arquivo mapa>

Se existir um arquivo de mapa com o nome .mailmap na raiz do repositório, as substituições declaradas são aplicadas automaticamente a cada commit.

Na manpage do git-filter-repo você pode checar todas as opções e vários exemplos de alterações possíveis utilizando a ferramenta.