Hoy necesité editar los commits de un repositorio creado recientemente donde sólo había commiteado yo, pero desde distintos entornos: mi setup habitual con la configuración correcta, otro equipo donde no había configurado la propiedad user.email global, y donde también había añadido el archivo de licencia directamente desde gitlab. Básicamente, tres direcciones de email distintas y dos nombres distintos asociados a diferentes commits que quería unificar, ya que es bastante desorganizado para un repositorio tan reciente.
Como encontré en esta pregunta en StackOverflow sobre reescribiendo el autor de los commits, se puede arreglar con la herramienta git-filter-repo:
Para instalarla, usé brew (aunque está disponible en la mayoría de gestores de paquetes) con sólo:
brew install git-filter-repo
Y después la puedes usar con:
git-filter-repo --name-callback 'return name.replace(b"oldName", bytes("newNameWithUtf8Chars", "utf-8"))' --email-callback 'return email.replace(b"oldmail@example.com", b"newmail@example.com")' --force
Después de esto tuve que reañadir el repositorio remote y hacer git push --force. Ten en cuenta que se reescribe el historial, así que puede que necesites (y tus compañeros) reclonar el repo. Recuerda planificarlo acordemente.
Ten también en cuenta que si la rama está protegida, puede que necesites editar permisos para poder hacer el push. Yo lo permití temporalmente siguiendo los pasos de Allow force push on a protected branch on Gitlab docs.
Comments