当我们换邮箱了,想把已经提交过的 commit 的邮箱和用户名改成新的时候。
先把本地配置成新的
git config user.name '丁少华'
git config user.email '新邮箱@xx.com'
这时候就可以用下面的脚本代码了
在项目根目录下创建 email.sh 写入下面这段代码
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="旧邮箱@xx.com"
CORRECT_NAME="新用户名"
CORRECT_EMAIL="新邮箱@xx.com"
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
OLD_EMAIL
为旧的邮箱,CORRECT_NAME
、CORRECT_EMAIL
为自己的新邮箱和用户名。
然后我们来执行一下这个email.sh文件即可
./email.sh
执行过程可能比较长
如果执行失败的话,执行一下这段命令
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
这时候虽然本地修改成功了,但是你还没有推送到远程,所以再执行一下命令
git push origin --force --all
标签:GIT,Git,Name,--,EMAIL,git,邮箱,Commit,CORRECT
From: https://www.cnblogs.com/dingshaohua/p/17346820.html