最近在做自己项目的时候,由于使用了git全局配置的用户名和邮箱,导致自己私人的仓库里面的所有提交记录都是用的公司的邮箱和用户名,于是想批量替换一下。
可以在需要修改的项目的根目录下使用如下命令,进行批量替换:
git filter-branch -f --env-filter \ "GIT_AUTHOR_NAME='freephp'; GIT_AUTHOR_EMAIL='fightforphp@gmail.com';" HEAD然后再强制推送给远程:
git push origin -f branch_name之后还要对这个项目进行本地化配置用户名和邮箱,命令如下:
git config user.username "freephp" git config user.email "fightforphp@gmail.com"从此之后再进行提交,提交信息中的用户名和邮箱就是新设置的了。
再使用git log命令,可以看到新提交的提交记录如下:
总结一下,如果存在多个不同组织的项目(公司、个人、开源),需要在每个所属组织的项目中单独设置本地设置,避免使用全局配置导致信息混乱。当然批量处理也算是一个不错的补救方法,相关命令非常实用。