【Git】如何修改本地仓库的用户名和邮箱
慕雪年华

最近我修改了我gitee和github的用户名还有邮箱,所以需要对本地仓库配置的用户名和邮箱进行更改

1.命令

刚开始我使用的是如下命令

1
2
git config --global user.email "邮箱"
git config --global user.name "用户名"

但是很不辛,这个命令没有用,因为它是用来初始化你的git环境的,对已有的git仓库不起作用

但是我们在linux下可以添加上另外一个参数来实现

1
2
git config --global --replace-all user.email "邮箱" 
git config --global --replace-all user.name "用户名"

这样就修改成功了

image

这个命令在windows下似乎无法识别,会弹出git的命令行帮助

image

但是,修改成功后的提交,只对未来的提交有效;这里必须得吐槽一下gitee和github统计提交的不同之处

  • gitee统计提交依据的是用户名+邮箱,只要有一个不对就无法统计
  • github统计提交只依据邮箱,只要你邮箱对了,用户名是不管你的

所以要想让gitee的统计能生效,那就必须要修改之前所有提交信息中的用户名和邮箱

image

2.修改之前提交中的用户名和邮箱

参考博客

复制如下代码到一个本文编辑器里面,将内部的邮箱和用户信息修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
' --tag-name-filter cat -- --branches --tags

随后将其粘贴到git命令行中,回车执行

image

image

执行完毕,就能看到所有git提交的用户名和邮箱都修改成功了!接下来要做的就是强制提交

1
git push -f

强制提交了之后,之前显示不出来的信息和小绿点,现在也能正常显示了

image

如果用上面的命令修改失败的话,那就尝试执行下面的命令

1
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

随后再重试上面的命令,应该就OK了