How to amend several commits in Git to change author

前端 未结 6 1010
逝去的感伤
逝去的感伤 2020-11-28 17:14

I have made a series of commits in Git and I realise now that I forgot to set my user name and user email properties correctly (new machine). I have not yet pushed these co

6条回答
  •  萌比男神i
    2020-11-28 17:41

    This method was documented by GitHub for this very purpose (though GitHub has since removed it). The steps are:

    1. Open the terminal and make a bare clone of your repo
    git clone --bare https://github.com/user/repo.git
    cd repo
    
    1. Edit the following script (replacing OLD_EMAIL, CORRECT_EMAIL, and CORRECT_NAME)
    #!/bin/sh
    
    git filter-branch --env-filter '
    OLD_EMAIL="your-old-email@example.com"
    CORRECT_NAME="Your Correct Name"
    CORRECT_EMAIL="your-correct-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
    
    1. Copy/paste the script into your terminal and press enter to run it.
    2. Push your changes with git push --force --tags origin 'refs/heads/*' and you're done!

提交回复
热议问题