前言:旧仓库迁移到新的git仓库,而新仓库开启了规则:
检查 Git 提交的提交者 (Committer) 和提交作者 (Author) 必须是已验证的邮箱
于是,旧的代码仓库无法整库迁移,提交时提示:
remote: 提交 52954f9388213811dbb4238d0b4d672497d09da1 的提交作者邮箱 xxxx@xx.com 不是有效的 邮箱。
解决:
#!/bin/sh
git filter-branch -f --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
保存成sh文件,如 gitemail.sh
放在仓库下
Windows使用git bash
执行:
./gitemail.sh
踩坑:
修改多人时,执行修改到第二个会报错:
大概意思是已经有备份,无法覆盖,解决:
新建一个分支,例如新建一个tmp分支
git checkout -b tmp
然后继续以上执行