惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
Y
Y Combinator Blog
I
InfoQ
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - Franky
IT之家
IT之家
H
Help Net Security
月光博客
月光博客
S
SegmentFault 最新的问题
B
Blog
aimingoo的专栏
aimingoo的专栏
GbyAI
GbyAI
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
Vercel News
Vercel News
博客园 - 叶小钗
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
Jina AI
Jina AI
T
The Blog of Author Tim Ferriss

运维开发绿皮书

OBS虚拟摄像头重命名 Ubuntu备份为LiveOS 使用Powershell卸载windows默认程序 Cisco路由器OSPF配置 汽车的分类和特点 Windows11跳过TPM2.0 HTTPS 双向认证与 USB 加密锁配置实战 SSL 证书工具 字数统计 BMI 计算 颜色转换 Hash 生成器 JSON 格式化 JWT 解码 房贷计算 时间戳转换 URL 编码 UUID 生成 牛马时钟 二维码批量生成器 CKS Simulator Kubernetes 1.25 FRP TOTP验证码生成器 direct-ssh-passthrough-nat 脚本使用说明 Python软件授权 Linux命令行百度网盘 为 Containerd 配置 Harbor 无证书镜像站 Docker一键部署Meta和MetacubexD面板 必应搜索屏蔽垃圾网站 VMware的ubuntu完整安装vm-tools支持粘贴板
修改Git提交历史中的作者信息
Paper-Dragon · 2025-06-30 · via 运维开发绿皮书

修改Git提交历史中的作者信息

通过脚本批量修改Git提交历史中的作者姓名和邮箱:

bash <(curl -s https://www.geekery.cn/sh/LinuxCTS/tools/git_change_author.sh)

脚本源码

#!/bin/bash

# --------------------------------------------------------------------
# author: Paper-Dragon <2678885646@qq.com>
# date: 2025-06-26
# description: Change git log author name and email
# --------------------------------------------------------------------

# 交互式输入参数
read -rp "请输入原作者姓名: " OLD_NAME
read -rp "请输入修正后的作者姓名: " CORRECT_NAME
read -rp "请输入原作者邮箱: " OLD_EMAIL
read -rp "请输入修正后的邮箱: " CORRECT_EMAIL

# 参数校验
if [[ -z "$OLD_NAME" || -z "$CORRECT_NAME" || -z "$OLD_EMAIL" || -z "$CORRECT_EMAIL" ]]; then
    echo "错误:所有参数都必须提供,不能为空!"
    echo "请确保输入以下所有信息:"
    echo " - 原作者姓名"
    echo " - 修正后作者姓名"
    echo " - 原作者邮箱"
    echo " - 修正后邮箱"
    exit 1
fi

export OLD_NAME="$OLD_NAME"
export CORRECT_NAME="$CORRECT_NAME"
export OLD_EMAIL="$OLD_EMAIL"
export CORRECT_EMAIL="$CORRECT_EMAIL"


git filter-branch --env-filter '
if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ] || [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] || [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ] || [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]; then
    if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ]; then
        export GIT_COMMITTER_NAME="$CORRECT_NAME"
    fi
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]; then
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ]; then
        export GIT_AUTHOR_NAME="$CORRECT_NAME"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]; then
        export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
fi
' --tag-name-filter cat -- --branches --tags

echo "修改完成!请注意:" echo "1. 此操作会重写历史,已推送的仓库需要强制推送 (git push --force)" echo "2. 协作仓库需要通知其他成员重新克隆"

更新日志

  • 00625-update fixed Interactive mode for Git change author script
  • 50089-修改Git提交历史中的作者信息