git批量处理git author和commit

最近在做自己项目的时候,由于使用了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命令,可以看到新提交的提交记录如下:

commit f237a55237ecceb7f837bae0bedde2b927451a07
Author: freephp
<fightforphp@gmail.com>
Date:   Wed Sep 29 19:06:19 2021 +0800

    改动部分逻辑和修复更新bug

总结一下,如果存在多个不同组织的项目(公司、个人、开源),需要在每个所属组织的项目中单独设置本地设置,避免使用全局配置导致信息混乱。当然批量处理也算是一个不错的补救方法,相关命令非常实用。

posted @   freephp  阅读(520)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示