diff options
| author | Christian Cleberg <[email protected]> | 2024-03-29 01:42:38 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2024-03-29 01:42:38 -0500 |
| commit | 4cd7447aced18a5469feae91886076507c0b9f0e (patch) | |
| tree | a4733d553ce68f64277ffa3a52f800dc58ff72de /content/blog/2021-05-30-changing-git-authors.org | |
| parent | b90b88ff1cb8ade86496fe072edac3cd27fe9463 (diff) | |
| parent | 07c42d3ad17060131e822f5816d2057cd1753b1b (diff) | |
| download | cleberg.net-4cd7447aced18a5469feae91886076507c0b9f0e.tar.gz cleberg.net-4cd7447aced18a5469feae91886076507c0b9f0e.tar.bz2 cleberg.net-4cd7447aced18a5469feae91886076507c0b9f0e.zip | |
merge org branch into main
Diffstat (limited to 'content/blog/2021-05-30-changing-git-authors.org')
| -rw-r--r-- | content/blog/2021-05-30-changing-git-authors.org | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/content/blog/2021-05-30-changing-git-authors.org b/content/blog/2021-05-30-changing-git-authors.org new file mode 100644 index 0000000..b06660d --- /dev/null +++ b/content/blog/2021-05-30-changing-git-authors.org @@ -0,0 +1,72 @@ +#+title: Changing Git Authors +#+date: 2021-05-30 +#+description: A guide to change Git author names and emails in old commits. +#+filetags: :dev: + +* Changing Git Author/Email Based on Previously Committed Email +Here's the dilemma: You've been committing changes to your git +repository with an incorrect name or email (or multiple repositories), +and now you want to fix it. Luckily, there's a semi-reliable way to fix +that. While I have never experienced issues with this method, some +people have warned that it can mess with historical hashes and integrity +of commits, so use this method only if you're okay accepting that risk. + +Okay, let's create the bash script: + +#+begin_src sh +nano change_git_authors.sh +#+end_src + +The following information can be pasted directly into your bash script. +The only changes you need to make are to the following variables: + +- =OLD_EMAIL= +- =CORRECT_NAME= +- =CORRECT_EMAIL= + +#+begin_src sh +#!/bin/sh + +# List all sub-directories in the current directory +for dir in */ +do + # Remove the trailing "/" + dir=${dir%*/} + # Enter sub-directory + cd $dir + + git filter-branch --env-filter ' + + OLD_EMAIL="[email protected]" + CORRECT_NAME="your-new-name" + CORRECT_EMAIL="[email protected]" + + 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 + + git push --force --tags origin 'refs/heads/*' + + cd .. +done +#+end_src + +Finally, save the bash script and make it executable. + +#+begin_src sh +chmod a+x change_git_authors.sh +#+end_src + +Now you can run the script and should see the process begin. + +#+begin_src sh +./change_git_authors.sh +#+end_src |
