Git历史记录修改用户名和邮箱

Rockygitgit大约 1 分钟

  1. 进入仓库目录,执行

    #!/bin/sh
    
    git filter-branch -f --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
    
    git config user.name "$CORRECT_NAME"
    git config user.email "$CORRECT_EMAIL"
    ' --tag-name-filter cat -- --branches --tags
    
    
  2. 执行

    git push --force
    
  3. 如果执行1的过程中出错,可以执行下面命令后重试

    rm -rf .git/refs/original/
    git reflog expire --expire=now --all
    
    或者
    
    git update-ref -d refs/original/refs/heads/master
    
    或者
    
    git filter-branch -f --tree-filter -f 'rm -f test' -- --all
    

系统推荐









  • 随机毒鸡汤:追我吧,追到我,我给你开追到会。