How to Change Git Commit Author Information for All Commits: A Complete Guide

Gokul
3 min read4 days ago

--

Have you ever found yourself in a situation where you need to update the author information for all your Git commits? Perhaps you’ve been committing with the wrong email address or need to update your name across an entire repository. In this guide, I’ll walk you through the process of changing Git commit author information systematically.

Why Would You Need This?

Common scenarios where you might need to change commit author information include:

  • Switching from a personal to a work email address
  • Correcting a misconfigured Git identity
  • Updating commits after changing your name
  • Standardizing author information across a project

The Solution: Using git filter-branch

Git provides a powerful command called filter-branch that allows us to rewrite repository history. We'll use this to update author information across all commits.

The Complete Script

Here’s the script that will do the magic:

git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your New Name"
CORRECT_EMAIL="your-new-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

Step-by-Step Breakdown

Prepare Your Information

  • Identify your old email address
  • Decide on the new name and email you want to use
  • Make sure you have a backup of your repository

Modify the Script

  • Replace your-old-email@example.com with your actual old email
  • Update Your New Name with your desired name
  • Change your-new-email@example.com to your new email address

Execute the Change

  • Run the script in your repository’s root directory
  • The script will process all branches and tags

Push the Changes

git push --force origin --all
git push --force origin --tags

Important Considerations and Warnings

Use — force with Caution

The --force flag is powerful but dangerous. It overwrites the remote history, which can cause problems for other developers working on the same repository. Make sure to:

  • Coordinate with your team before making these changes
  • Have everyone pull the updated history after the change
  • Avoid this on public repositories unless necessary

Repository Backup

Before running this script, it’s crucial to:

  • Create a backup of your repository
  • Test the changes on a clone first
  • Verify the changes before pushing

Alternative for Recent Commits

If you only need to change recent commits, consider using git rebase -i instead. It's safer and more precise for modifying a small number of commits.

Best Practices Moving Forward

To avoid needing to change author information in the future:

Configure Git Properly

git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"

Use Repository-Specific Configurations

git config user.name "Your Name"
git config user.email "your-email@example.com"

Changing Git commit author information might seem daunting, but it’s a straightforward process with the right approach. Always back up your repository before making such changes, and communicate with your team when working on shared repositories.

The script provides a powerful tool to maintain a clean and consistent commit history. Just remember to use it responsibly, especially when working with shared repositories.

Happy coding..!

--

--

Gokul
Gokul

No responses yet