有些时候,可能你在 Git 提交的时候不经意间提交了错误的 Commit 作者信息,那么如何修改成正确的呢?
如果尝试修改 Git 的提交邮箱
git config –global user.name “Your Name”
git config –global user.email “Your Email”
这样可以修改作者的名字和邮箱
但是,这种方法只对之后的 Commit 有效,之前提交过的就改不了了…
还好,Google 到了一种解决办法,这里分享下,也算是做个记录
1、打开终端(Linux 的终端或 Windows 下 Git 客户端的 git-bash.exe 均可)
2、同步下来你的项目并进入目录(以 repo.git 为例)
git clone –bare https://github.com/user/repo.git
cd repo.git
3、复制下面的脚本,可以直接复制到终端命令行里或新建 Shell 脚本
并修改oldEmail、 newName、newEmail
三个变量为你自己的
git filter-branch --env-filter '
oldEmail="你的旧邮箱"
newName="你的新名字"
newEmail="你的新邮箱"
if [ "$GIT_COMMITTER_EMAIL" = "$oldEmail" ]; then
export GIT_COMMITTER_NAME="$newName"
export GIT_COMMITTER_EMAIL="$newEmail"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$oldEmail" ]; then
export GIT_AUTHOR_NAME="$newName"
export GIT_AUTHOR_EMAIL="$newEmail"
fi
' --tag-name-filter cat -- --branches --tags
4、执行脚本,看到一堆 rewritten 的时候就说明写入完成了
5、git log 查看新的 Commit 信息是否正确
提交
git pull
# 也是提交,没试过
git push –force –tags origin ‘refs/heads/*’
删除临时文件
cd ..
rm -rf repo.git
需要注意的是,上面的执行后,新 clone 出来的项目 Log 中 Name 和 Email 已经为最新的信息。
在执行上面的几步之前已经 clone 出来的项目中,如果执行 git pull 的话,Log 中的 Name 和 Email 信息还是原来的信息
这样就算是完成了