如何将Git单分支提交人信息修改为?
摘要:前提: 把指定分支中,指定的错误邮箱或名称,替换为正确的值 1. 确定一定要是分支(如果存在tag与分支同名时,修改分支时,先不要切tag出来,否则后面push数据,git会因为同名匹配多个,导致无法正确push) git checkout
前提:
把指定分支中,指定的错误邮箱或名称,替换为正确的值
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
