首先切换到仓库的目录, 然后执行下面的语句:
# 请先替换脚本里的中文字 git filter-branch --env-filter ' an="$GIT_AUTHOR_NAME" am="$GIT_AUTHOR_EMAIL" cn="$GIT_COMMITTER_NAME" cm="$GIT_COMMITTER_EMAIL" if [ "$GIT_COMMITTER_EMAIL" = "原邮箱地址" ] then cn="目标名字" cm="目标邮箱地址" fi if [ "$GIT_AUTHOR_EMAIL" = "原邮箱地址" ] then an="目标名字" am="目标邮箱地址" fi export GIT_AUTHOR_NAME="$an" export GIT_AUTHOR_EMAIL="$am" export GIT_COMMITTER_NAME="$cn" export GIT_COMMITTER_EMAIL="$cm" '
执行时会弹出以下警告:
WARNING: git-filter-branch has a glut of gotchas generating mangled history
rewrites. Hit Ctrl-C before proceeding to abort, then use an
alternative filtering tool such as ‘git filter-repo’
(https://github.com/newren/git-filter-repo/) instead. See the
filter-branch manual page for more details; to squelch this warning,
set FILTER_BRANCH_SQUELCH_WARNING=1.
Proceeding with filter-branch…
大致意思是:
警告:git-filter-branch 有太多的陷阱,会生成损坏的历史记录重写。
先按Ctrl-C以中止操作,然后使用其他过滤工具,例如 ‘git filter-repo’ (https://github.com/newren/git-filter-repo/)。
有关更多详细信息,请参见过滤器分支手册页。
要消除此警告,请设置FILTER_BRANCH_SQUELCH_WARNING = 1。
不用理会, 等几秒钟后会接着执行. 最终看到的结果形式如下:
Rewrite 380ed76b2376c0a75ce49d7ed9608a775e96635c (11/11) (0 seconds passed, remaining 0 predicted)
Ref ‘refs/heads/master’ was rewritten
再用 git log
命令查看提交记录即可发现名字与邮箱被改过来了, 任务完成.