Git 修改 commit 作者信息
问题
在家和办公室使用不同的git name
跟email
,结果commit
的时候忘记修改配置导致commit
的个人名称跟邮箱都不对了。
解决方法
修改 git 配置
git config --global user.email "youremail@googl.com"
git config --global user.name "your name"
但是补救措施只对以后的 commit
起效, 如果想修改之前的作者信息,Github 给出了官方指南:Changing author info
修改 git 历史提交信息
To change the name and/or email address recorded in existing commits, you must rewrite the entire history of your Git repository.
为了修改 commit 的作者邮箱地址,你必须重写整个 git 仓库历史
Warning: This action is destructive to your repository’s history. If you’re collaborating on a repository with others, it’s considered bad practice to rewrite published history. You should only do this in an emergency.
警告: 这个操作会破坏你的仓库历史, 如果你和别人在协同开发这个仓库,重写已发布的历史记录是一个不好的操作。建议只在紧急情况操作
操作步骤
- 打开powershell
- 新建一个全新的仓库信息
git clone --bare https://github.com/user/repo.git
cd repo.git
- 在终端复制并粘贴以下脚本,并将以下的变量修改为你需要的
**OLD_EMAIL**
**CORRECT_NAME**
**CORRECT_EMAIL**
脚本信息
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.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
- 按下 enter 键来运行这个脚本
- 校对新的 git 仓库历史
- 将修改后的仓库历史推到远程
git push --force --tags origin 'refs/heads/*'
- 删除这个仓库
cd ..
rm -rf repo.git