{{tag>git}}
====== Change git author and email in history retroactively ======
Before executing the script, set your user.name and user.email git config parameter properly!
This changes SHA1s, so take care when using it on a branch that has already been pushed.
===== First stash any unstaged changes =====
git stash
===== Apply fix =====
Set variables on lines 2,3 and 4 below and run:
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
===== Delete duplicate backup history =====
git update-ref -d refs/original/refs/heads/master
rm -rf .git/refs/original/
===== Verify the new rewritten log via =====
git log --pretty=format:"[%h] %cd - Committer: %cn (%ce), Author: %an (%ae)"
====== Tested on ======
*
====== See also ======
====== References ======
* https://stackoverflow.com/questions/750172/how-to-change-the-author-and-committer-name-and-e-mail-of-multiple-commits-in-gi