沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • 网络通信
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • 网络通信
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 开发工具篇

    • idea相关

    • 玩转Git

      • 基础知识梳理
      • Git配置相关操作
      • git修改已提交人的用户名和邮箱
        • 前言
        • 场景一:修改最后一次提交的提交人信息
        • 场景二:修改所有历史提交的提交人信息
          • 1. 备份仓库(可选但推荐)
          • 2. 执行批量修改脚本
          • 3. 清理临时文件
        • 强制推送到远程分支(若已推送)
        • 学习参考
      • git提交规范
      • git分支管理
      • git常用操作
      • 常见问题
    • Maven相关

    • 前端工具

    • 测试工具

  • 工具库篇

  • 开发技巧篇

  • 工具类系列

  • 随笔

  • 开发日常
  • 开发工具篇
  • 玩转Git
沉梦听雨
2023-12-07
目录

git修改已提交人的用户名和邮箱

# git 修改已提交人的用户名和邮箱

# 前言

需注意以下两点内容:

  1. 需要在顶层目录下(就是 .git 文件夹所在的目录下,右键打开 "Git Bash Here"),否则运行下面的代码时会报错;
  2. 确保要修改的仓库,里面的文件和远程仓库的版本一致,如果有修改还未提交的内容,需要先提交或者取消更改,否则运行下面的代码时会报错。

# 场景一:修改最后一次提交的提交人信息

执行指令:

  • --author:指定新的提交人信息,格式为用户名 <邮箱>。
  • --no-edit:不修改提交说明,仅更新提交人;若需同时修改提交信息,可去掉该参数,在编辑器中编辑后保存。
# 直接修改并覆盖最后一次提交
git commit --amend --author="新用户名 <新邮箱地址>" --no-edit
1
2

强制推送到远程(若已推送):

  • --force-with-lease:比直接 --force 更安全,会检查远程分支是否有他人的新提交,避免覆盖他人工作。
# 如果最后一次提交已经推送到远程,需要强制推送覆盖
git push --force-with-lease origin 分支名
1
2

# 场景二:修改所有历史提交的提交人信息

如果需要修改仓库所有历史提交的提交人信息(如用户名 / 邮箱填写错误,需全局修正),推荐使用 Git 官方提供的脚本批量修改。

# 1. 备份仓库(可选但推荐)

为防止操作失误,先复制一份仓库目录作为备份。

# 2. 执行批量修改脚本

在仓库根目录执行以下脚本(替换其中的<旧邮箱>、<新用户名>、<新邮箱>为实际值):

主要修改以下三点内容:

  • OLD_EMAIL:填修改前的邮箱地址
  • CORRECT_NAME:填新的用户名称
  • CORRECT_EMAIL:填新的邮箱

然后在 "Git Bash Here" 打开的窗口里面运行代码:

  • --env-filter:通过环境变量修改提交的作者(Author)和提交者(Committer)信息。
  • --tag-name-filter cat:保留标签信息,不修改标签。
  • --branches --tags:对所有分支和标签的提交生效。
#!/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="xxxx@qq.com"
CORRECT_NAME="chenmeng"
CORRECT_EMAIL="xxxx@qq.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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 3. 清理临时文件

脚本执行后会生成临时文件,执行以下命令清理:

git update-ref -d refs/original/refs/heads/分支名
git reflog expire --expire=now --all
git gc --prune=now
1
2
3

# 强制推送到远程分支(若已推送)

执行完第一步的命令之后,执行下面这条命令,强制推送到远程仓库:

# 强制推送本地分支到远程仓库,直接覆盖远程分支的历史记录
# 风险:无论远程分支是否有他人的新提交,都会强制覆盖,可能导致他人的提交丢失
# 适用场景:本地仓库是唯一提交源,或确认远程分支无他人更新的私人仓库
git push --force


# --force-with-lease:安全的强制推送,先检查远程分支是否有本地未同步的新提交,若有则拒绝推送
# origin:指定推送的远程仓库名称(默认远程仓库名)
# --all:推送本地所有分支到远程仓库,覆盖所有对应的远程分支
# 风险:仅在确认所有本地分支的修改是最新且需要覆盖远程时使用,团队协作前需通知协作者
git push --force-with-lease origin --all
# 指定推送到 dev 分支
git push --force-with-lease origin dev


# --force-with-lease:安全强制推送,先校验远程标签是否有本地未同步的更新
# origin:指定远程仓库名称
# --tags:推送本地所有标签(tag)到远程仓库,并覆盖远程对应的同名标签
# 适用场景:修改了历史提交后,需要同步本地更新后的标签到远程
# 注意:标签一旦推送,修改后强制推送会导致远程标签历史丢失,需谨慎
git push --force-with-lease origin --tags
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 学习参考

  • Git 修改已提交的用户名和邮箱_git修改提交者用户名和邮箱-CSDN博客 (opens new window)
上次更新: 2025/11/26 19:37:56
Git配置相关操作
git提交规范

← Git配置相关操作 git提交规范→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式