Skip to content

Instantly share code, notes, and snippets.

Last active July 18, 2024 15:54
Show Gist options
  • Save amalmurali47/77e8dc1f27c791729518701d2dec3680 to your computer and use it in GitHub Desktop.
Save amalmurali47/77e8dc1f27c791729518701d2dec3680 to your computer and use it in GitHub Desktop.
Change ownership of selected older commits in Git
  1. Clone the repo.
  2. Use git rebase -i --root
  3. vim will open. Select the commits you want to modify by changing pick to edit. If you would like to change all the commits, perform the following replace: :%s/^pick/edit/g. This command changes all instances of "pick" at the start of lines to "edit".
  4. You will now be shown all the selected commits one by one. Each commit message will be displayed. You have two options:
    • If you would like to keep the commit author details the same, do a git rebase --continue.
    • If you would like to change it to a different name/email, do git commit --amend --reset-author. If --reset-author is specified, it will use the details from your git config. (If you need to specify an alternate name/email, you can do so with --author="John Doe <>". If you would like to change the time to a previous date, you can do so with --date "2 days ago".)
  5. Do the same for all the commits and finish the rebase.
  6. Perform git push -f origin master to force push all the changes to upstream, and verify everything is correct.
  7. Now the commit history would say "X authored, Y commited" for all the commits you did not modify. To fix this, run the following git-filter command:
git filter-branch --env-filter '

# If the committer is updated but author isn't, set them both to author's name/email
    export GIT_AUTHOR_EMAIL="$OLD_EMAIL"    
  1. Now the "X authored, Y commited" problem will be fixed. However, this will also update the dates again. To fix that, run the following:
git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"' -f
  1. Finally, force-push again: git push -f origin master 🎉
Copy link

Very useful!
Keep up the good work!

Copy link

hafizMDM commented Feb 16, 2024

@amalmurali47 Does this change the commit's SHA1?

Copy link

@hafizMDM Yes, changing the authorship or any other details of a commit will indeed change its SHA-1 hash. This is because the hash is based on the commit's content, including author info.

Copy link

Thanks for the hint !!

Copy link

:1,Ns/pick/edit/g gives no range allowed error

Copy link

@AdityaPurswani, I've updated the third step with better instructions.


Thank you. Very useful

Copy link

Thank you, great guide, very helpful 👍

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