如何修改Git提交历史中的author,email和name等信息

修改上次提交的信息

window在git-bash操作,输入git commit --amend后,按i进入编辑模式,修改后wq保存即可

git commit --amend
  • --author="your_author<your_email>" 修改作者及邮箱信息
  • --no-edit 表示不修改提交body信息

示例:修改上次提交作者名称及邮箱信息,不修改提交内容

git commit --amend --author="xxx<xxx@qq.com>" --no-edit

修改所有git提交日志中name和eamil信息

使用git log命令查询实际日志提交的邮箱信息。

我通过webstrom中查看git的log显示:124662384+oduoduoke@users.noreply.github.com

当输入邮箱地址错误,在提交记录中无法匹配就会报错。

脚本命令

在Windows下通过Git Bash新建一个脚本文件git.sh

脚本命令如下:

#!/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="原邮箱地址"
CORRECT_NAME="新用户名"
CORRECT_EMAIL="新邮箱地址"

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

执行完成后,需要push至远程仓库

需要强制push

git push -f

删除分支命令

git push origin --delete xxx分支