Skip to content

Instantly share code, notes, and snippets.

@bgromov
Created June 23, 2016 17:50
Star You must be signed in to star a gist
Embed
What would you like to do?
Git: reset author for ALL commits
#!/bin/sh
# Credits: http://stackoverflow.com/a/750191
git filter-branch -f --env-filter "
GIT_AUTHOR_NAME='Newname'
GIT_AUTHOR_EMAIL='new@email'
GIT_COMMITTER_NAME='Newname'
GIT_COMMITTER_EMAIL='new@email'
" HEAD
@PlugFox
Copy link

PlugFox commented Aug 8, 2020

Thanks you very much)

@rogerBridge
Copy link

Thank you bro : )

@IvanSimeonov
Copy link

Thank you!

@ucalyptus
Copy link

@bgromov , Newname is our github id or actual name?

@benitezandres
Copy link

Thanks!

@sebastian13
Copy link

Nice! This even keeps old timestamps!
To push to a remote afterwards, a --force is needed.

git push --force --tags origin 'refs/heads/main'
# or
git push --force

Credits to the comments of https://stackoverflow.com/a/750191/8940679

@artiscode
Copy link

Thank you so much! This really helps when you change from a personal handle to a business one.

@Yaroslavzev
Copy link

Thank you so much!

@aitechcompany
Copy link

Thank you

@biniama
Copy link

biniama commented Sep 17, 2021

Thanks! I get this warning though.

WARNING: git-filter-branch has a glut of gotchas generating mangled history
         rewrites.  Hit Ctrl-C before proceeding to abort, then use an
         alternative filtering tool such as 'git filter-repo'
         (https://github.com/newren/git-filter-repo/) instead.  See the
         filter-branch manual page for more details; to squelch this warning,
         set FILTER_BRANCH_SQUELCH_WARNING=1.
Proceeding with filter-branch...

Rewrite 2a51e47ec68d9fb91xxxxxxxx (2/2) (0 seconds passed, remaining 0 predicted)    
WARNING: Ref 'refs/heads/main' is unchanged

Can you suggest something?

@arturkowalczyk300
Copy link

Thanks, works brillant.

@BeytullahC
Copy link

Thanks :)

@tt1k
Copy link

tt1k commented Mar 2, 2022

Thanks :)

@raymond-le-goldenowl
Copy link

thanks

@jun-uen0
Copy link

jun-uen0 commented May 4, 2022

Thanks a lot!

@billmetangmo
Copy link

Thanks. To update only your commits and not all ( even if not yours):

#!/bin/sh

git filter-branch -f --env-filter '
OLD_EMAIL="xxxxxxxxxxxxxxxxxxxxxxxxxx"
CORRECT_NAME="zzzzzzzzzzzzzzzzz"
CORRECT_EMAIL="yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
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
'  HEAD

@e4tjn
Copy link

e4tjn commented Nov 14, 2022

Thank you so much!

@Irfanwani
Copy link

Thank you very much

@KaduUlson
Copy link

Awesome! Thank you

@lucca-miorelli
Copy link

Thanks a lot.

@PipaStanislav
Copy link

Thanks

@INVISIBLE5130
Copy link

Thank you a lot!

@souravCoder1
Copy link

@bgromov , Newname is our github id or actual name?

both will work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment