Git 单分支,修改提交人信息

前提:

  把指定分支中,指定的错误邮箱或名称,替换为正确的值

1. 确定一定要是分支(如果存在tag与分支同名时,修改分支时,先不要切tag出来,否则后面push数据,git会因为同名匹配多个,导致无法正确push)

git checkout -b xxxx

注意,这个分支的代码,需要是最新的,需要pull

2. 替换(使用noreply,是因为个人邮箱是隐藏的,如果你的邮箱并不是隐藏的,则可以直接设定自己的真实邮箱)

git filter-branch -f --env-filter '
NEW_NAME="新名字"
NEW_EMAIL="XXX新名字@users.noreply.github.com"

if [ "$GIT_AUTHOR_NAME" = "旧名字" ] || [ "$GIT_AUTHOR_NAME" = "旧名字1" ] || [ "$GIT_AUTHOR_NAME" = "旧名字2" ]; then
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
' -- 分支名

 或者需要依据邮箱名作过滤调整

git filter-branch -f --env-filter '
NEW_NAME="新名字"
NEW_EMAIL="XXX新名字@users.noreply.github.com"

if [ "$GIT_AUTHOR_EMAIL" = "旧邮箱" ] || [ "$GIT_AUTHOR_EMAIL" = "旧邮箱1" ] || [ "$GIT_AUTHOR_EMAIL" = "旧邮箱2" ] || [ "$GIT_AUTHOR_NAME" = "旧名字" ]; then
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
' -- 分支名

 

3. 验证结果(查看最近15笔记录/查询去重后的用户名&邮箱)

git log 分支名 --pretty=format:"%h - %ad - %an <%ae> - %s" --date=short -15

 

git log 分支名 --pretty=format:"%an <%ae>" | Get-Unique

4. 强制推送

git push origin 分支名 --force
posted @ 2026-03-30 21:43  人间春风意  阅读(13)  评论(0)    收藏  举报