1. 程式人生 > >git 修改歷史提交的使用者名稱和郵箱

git 修改歷史提交的使用者名稱和郵箱

第一步clone 下git待修改的創庫,如果已經有了跳過

第二步執行如下指令碼

#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="老的郵箱"
CORRECT_NAME="新使用者名稱"
CORRECT_EMAIL="新郵箱"
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/*'

但是當你再次執行指令碼,想修改其他提交的姓名時會發現git丟擲了異常,

Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f
出現這一句說明之前曾經執行過 git filter-branch,然後在 refs/original/ 有一個備份,這個時候只要刪掉那個備份即可,刪除備份命令為 git update-ref -d refs/original/refs/heads/master

,或執行 $ git filter-branch -f --tree-filter -f 'rm -f test' -- --all