¿Puedo cambiar mi nombre y apellido en todas las confirmaciones anteriores?

Me gustaría cambiar mi nombre, apellido y correo electrónico en todos mis commits, ¿es posible?

Usa git-filter-branch .

 git filter-branch --commit-filter 'if [ "$GIT_AUTHOR_NAME" = "Josh Lee" ]; then export GIT_AUTHOR_NAME="Hobo Bob"; export GIT_AUTHOR_EMAIL=hobo@example.com; fi; git commit-tree "$@"' 

Esto solo afecta al autor, no al committer (que para la mayoría de los commits será el mismo que el autor). Si también desea reescribirlos, configure las variables GIT_COMMITTER_NAME y GIT_COMMITTER_EMAIL .

Se aplica la advertencia estándar sobre el historial de reescritura; solo hágalo en la historia que aún no se haya compartido.

Para volver a escribir el autor y el commiter en todos los commits seleccionados:

 git filter-branch --commit-filter \ 'if [ "$GIT_AUTHOR_NAME" = "OldAuthor Name" ]; then \ export GIT_AUTHOR_NAME="Author Name";\ export GIT_AUTHOR_EMAIL=authorEmail@example.com;\ export GIT_COMMITTER_NAME="Commmiter Name";\ export GIT_COMMITTER_EMAIL=commiterEmail@example.com;\ fi;\ git commit-tree "$@"' 

Si no hay otros autores, puede hacer:

 git filter-branch --commit-filter 'export GIT_AUTHOR_NAME="authorname"; \ export GIT_AUTHOR_EMAIL=mail@example.com; git commit-tree "$@"' 

Guarde el script a continuación como, por ejemplo, ~/.bin/git-replace-author y ejecútelo usando, por ejemplo:

 git replace-author "John Ssmith" "John Smith" "johnsmith@example.com" 

Sin arguments, actualiza todos los commits con su nombre para usar su dirección de correo electrónico actual de acuerdo con la configuration de Git.

 DEFAULT_NAME="$(git config user.name)" DEFAULT_EMAIL="$(git config user.email)" export OLD_NAME="${1:-$DEFAULT_NAME}" export NEW_NAME="${2:-$DEFAULT_NAME}" export NEW_EMAIL="${3:-$DEFAULT_EMAIL}" echo "Old:" $OLD_NAME "<*>" echo "New:" "$NEW_NAME <$NEW_EMAIL>" echo "To undo, use: git reset $(git rev-parse HEAD)" git filter-branch --env-filter \ 'if [ "$GIT_AUTHOR_NAME" = "${OLD_NAME}" ]; then export GIT_AUTHOR_NAME="${NEW_NAME}" export GIT_AUTHOR_EMAIL="${NEW_EMAIL}" export GIT_COMMITTER_NAME="${NEW_NAME}" export GIT_COMMITTER_EMAIL="${NEW_EMAIL}" fi' 

Raw (para download)

Solo si no has empujado tus compromisos al mundo. De otro modo, todos los demás tienen su antiguo nombre en su repository, lo que es poco probable que pueda cambiar el de todos.