警告!!!
仅适用于该项目只有一个contributor!!!
且本地clone的项目应当git clone全部历史,而不是 --depth=1 !!!
因为最后会git push -force,一旦操作不当会丢失之前的commit记录!!!
问题
我修改了github个人账户名称,但之后两个月提代码时,忘记更新一下git bash先前设置的username,导致我的项目commits页面上,contributor是旧名字,无法点击这个已经消失的用户,而且我的打卡绿墙少了一大片(这个最不能忍)。所以想批量修改下之前commits的contributor用户名称。
参考
修改git全部已提交的用户名和邮箱,这个我照着做了,最终git log看了下commit记录,没有成功。
修改git提交历史中的姓名和email,这篇文章给了一句话命令修改以往的姓名邮箱。
结合这两个,我成功修改。
解决
1、cd 进入项目目录
2、输入下面的命令,先换成自己的信息。
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='新用户名称'; GIT_AUTHOR_EMAIL='新邮箱地址'; GIT_COMMITTER_NAME='新用户名称'; GIT_COMMITTER_EMAIL='新邮箱地址';" HEAD
3、输入以下命令提交
git push --force --tags origin 'refs/heads/*'
再去github项目的commits页面,已经全换成我的新用户名了,打卡绿墙也补上了缺失的绿。