Cómo cambiar el nombre de commits con el autor incorrecto en git

He estado trabajando durante unos meses en un proyecto de Github y muchos de los compromisos que he realizado no se me asignaron debido a la "información incorrecta del autor".

¿Hay alguna manera de repasar estos commits o actualizar el autor a todos a la vez? Ellos son más o less 100.

Gracias

ACTUALIZACIÓN: Obtuve este error al intentar ejecutar el script en git bash: Error

Y este en windows cmd: Error 2 ¿ Ayuda a alguien? ¿Qué estoy haciendo mal?

Puede modificar el autor de edición de confirmación:

git commit --amend --author="John Doe <someone@example.com>" 

O use rebase interactivo para editar múltiples commits. Haga git rebase -i HEAD ~ 5 , luego marque todos los commit requeridos para editarlos y vuelva a enmendarlos con el campo de autor correcto como en el ejemplo de compromiso simple anterior.

Necesitarás usar la twig de filter

 git filter-branch --commit-filter ' if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ]; then GIT_COMMITTER_NAME="<New Name>"; GIT_AUTHOR_NAME="<New Name>"; GIT_COMMITTER_EMAIL="<New Email>"; GIT_AUTHOR_EMAIL="<New Email>"; git commit-tree "$@"; else git commit-tree "$@"; fi' HEAD ` 

Si usted es el ÚNICO usuario que se ha comprometido con este repository, simplemente puede actualizar todas las references sin verificar el contenido antiguo.

 git filter-branch -f --env-filter ' GIT_AUTHOR_NAME="Newname" GIT_AUTHOR_EMAIL="newemail" GIT_COMMITTER_NAME="Newname" GIT_COMMITTER_EMAIL="newemail" ' HEAD 

En cualquier caso, también puede cambiar las direcciones de correo electrónico en múltiples confirmaciones en un lote con filter-branch . --commit-filter tener cuidado de cambiar solo las direcciones de correo electrónico que son suyas, por lo que utiliza --commit-filter :

 $ git filter-branch --commit-filter ' if [ "$GIT_AUTHOR_EMAIL" = "schacon@localhost" ]; then GIT_AUTHOR_NAME="Scott Chacon"; GIT_AUTHOR_EMAIL="schacon@example.com"; git commit-tree "$@"; else git commit-tree "$@"; fi' HEAD 

Esto pasa y reescribe cada compromiso para tener su nueva dirección. Debido a que las confirmaciones contienen los valores SHA-1 de sus padres, este command cambia cada confirmación SHA-1 en su historial, no solo aquellas que tienen la dirección de correo electrónico correspondiente.

Referencia: https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History