为改变已经提交的 commit 的用户名和/或邮箱地址,你必须重写你 Git repo 的整个历史。执行这段脚本会重写 repo 所有协作者的历史。
完成以下操作后,任何 fork 或 clone 的人必须获取重写后的历史并把所有本地修改 rebase 入重写后的历史中,请谨慎操作。
1.编写脚本 reset.sh
将OLD_EMAIL
,NEW_NAME
和NEW_EMAIL
改成你自己的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #!/bin/sh
git filter-branch -f --env-filter '
OLD_EMAIL="seepine@example.com" NEW_NAME="seepine" NEW_EMAIL="seepine@outlook.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$NEW_NAME" export GIT_COMMITTER_EMAIL="$NEW_EMAIL" fi if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then export GIT_AUTHOR_NAME="$NEW_NAME" export GIT_AUTHOR_EMAIL="$NEW_EMAIL" fi ' --tag-name-filter cat -- --branches --tags
|
2.执行
3.推送到远程仓库
1
| git push --force --tags origin ‘refs/heads/*’
|