Git: author en email aanpassen in history

Het gebeurt al wel eens dat je in een commit de verkeerde author of email hebt staan. Als je zo een reeks commits hebt in een project, kan je met een shell script alle commits herschrijven.

#!/bin/sh
 
git filter-branch --env-filter '
 
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
 
if [ "$GIT_COMMITTER_EMAIL" = "old_mail@example.com" ] || [ "$GIT_COMMITTER_EMAIL" = "another_old_mail_to_change@example.com" ]
then
    cn="New Name"
    cm="new_email@example.com"
fi

if [ "$GIT_AUTHOR_EMAIL" = "old_mail@example.com" ] || [ "$GIT_AUTHOR_EMAIL" = "another_old_mail_to_change@example.com" ]
then
    an="New Name"
    am="new_email@example.com"
fi
 
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
' -f -- --all

Nadien moet je dan wel geforceerd pushen.

git push --force

Wel opletten als er nog andere mensen zijn die een lokale versie hebben van de repo…