Note
Previously, people used git filter-branch
to accomplish the same task. However, it shouldn't be used anymore, as it's somewhat deprecated as of Git 2.24, Q4 2019. Instead, we can now use git filter-repo
.
Installation
brew
If you're using macOS, you can use Homebrew.
$ brew install git-filter-repo
After installation, you can use either git filter-repo
or git-filter-repo
.
pip
Alternatively, you can use pip
to install the package:
$ python3 -m pip install --user git-filter-repo
Once the installation is complete, if you can't use git filter-repo
or git-filter-repo
, check your PATH. Alternatively, you can use it as shown below:
$ <PATH TO PYTHON>/<VERSION>/bin/git-filter-repo
mailmap
To use git filter-repo
, you'll need to prepare a mailmap file, which is used to replace your old author names and emails with the new ones. The syntax for the mailmap file is as follows:
Correct Name <[email protected]> OLD NAME1 <[email protected]> Correct Name <[email protected]> OLD NAME2 <[email protected]>
Feel free to add as many OLD NAME
and OLD EMAIL
entries as necessary for multiple author names that need to be changed.
For example,
Jii Yoo <[email protected]> John Doe <[email protected]> Jii Yoo <[email protected]> John Doe <[email protected]> Jii Yoo <[email protected]> Jane Doe <[email protected]>
git filter-repo
Please note that you need a freshly cloned repository. If you are performing this on an existing repository, it's advisable to re-clone it.
$ cd repo repo/$ git filter-repo --mailmap your-mailmap
After completing the task, the origin
remote will be automatically removed. To restore it, you will need to add the origin
back to your repository using the following command:
repo/$ git remote add origin REPO-URL