旧的git本地仓库上传到新建的gitee仓库时,出现警告邮箱暴露,push失败
vbnet
Push will publish a hidden email, make email public or abandon related commits
remote: error: hook declined to update refs/heads/main
解决方案: 查看当前提交记录中的邮箱,是否和gitee中默认邮箱设置中给的提交邮箱一致
bash
# 列出所有唯一邮箱及其出现次数
git log --all --format='%ae' | sort | uniq -c | sort -rn
如果不一致,可修改记录中的邮箱。先全局设置提交邮箱为gitee默认邮箱:
arduino
git config --global user.email "xxx@user.noreply.gitee.com"
查看当前生效的邮箱设置:
arduino
git config user.email
再更新最新的提交但push失败记录中的邮箱:
css
# 修正最近一次提交的作者信息
git commit --amend --reset-author --no-edit
如果提交记录中还有之前的git日志,也要更新邮箱为可公开的邮箱:
sql
# 使用 git filter-repo(推荐,比 filter-branch 更安全高效)
# 先安装:pip3 install git-filter-repo 或 brew install git-filter-repo
git filter-repo --email-callback '
if email == b"要替换的邮箱":
return b"gitee默认可公开的提交邮箱"
return email
'
再次查看提交记录中的邮箱:
perl
# 最近一次提交的作者邮箱
git log -1 --format="%ae"
# 最近 N 次提交的邮箱(检查历史是否一致)
git log -n 5 --format="%h %ae %s"
如果正确无误,可以再次git push;如果还是错的,可以考虑直接git clone线上数据库,然后把项目文件拷贝进来,记得先全局设置提交邮箱为gitee默认邮箱,然后再git add、commit、push