53 lines
1.7 KiB
Markdown
53 lines
1.7 KiB
Markdown
---
|
||
title: 修改Git所有提交记录中的作者和邮箱
|
||
author: 查尔斯
|
||
date: 2022/03/27 13:00
|
||
categories:
|
||
- 杂碎逆袭史
|
||
tags:
|
||
- Git
|
||
---
|
||
|
||
# 修改Git所有提交记录中的作者和邮箱
|
||
|
||
## 前言
|
||
|
||
**C:** 上一篇,笔者介绍了怎么修改 Git 最后一次提交的作者和邮箱信息。那如果你是已经提交了很多次的记录,难道一个个的回退过去修改吗?显然不可能,所以本篇笔者带着大家认识一下如何批量修改 Git 提交记录中的作者和邮箱信息。
|
||
|
||
## 问题解决
|
||
|
||
解决方法其实就是编写一个脚本来进行批量替换。
|
||
|
||
1. 新建一个 sh / bat 格式的脚本文件(如果你是在 cmd 中执行,那就用 bat 格式,如果是在 git bash 中执行就用 sh)
|
||
|
||
2. 复制下方脚本内容到脚本文件中,然后编辑替换好错误邮箱、正确作者和邮箱(如果是在 cmd 中执行,#!/bin/sh 就替换为 #!/bin/bat)
|
||
|
||
```shell
|
||
#!/bin/sh
|
||
|
||
git filter-branch --env-filter '
|
||
WRONG_EMAIL="错误的邮箱"
|
||
NEW_NAME="正确的作者名"
|
||
NEW_EMAIL="正确的邮箱"
|
||
|
||
if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
|
||
then
|
||
export GIT_COMMITTER_NAME="$NEW_NAME"
|
||
export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
|
||
fi
|
||
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
|
||
then
|
||
export GIT_AUTHOR_NAME="$NEW_NAME"
|
||
export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
|
||
fi
|
||
' --tag-name-filter cat -- --branches --tags
|
||
```
|
||
|
||
3. 保存脚本
|
||
|
||
4. 将脚本文件放到要批量修改提交记录的 Git 仓库中(根目录就行)
|
||
|
||
1. 执行脚本
|
||
|
||
随后你就会看到,先是提示一个 warn 警告,然后它会一条条的修改以往提交记录,如果错误的提交比较多,那就耐心等一会儿吧。
|