You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SVN迁移至Git时提交者邮箱不匹配问题求助

SVN迁移至Git时提交者邮箱不匹配问题求助

看起来你在把SVN项目迁移到Git的过程中,被远程仓库的pre-receive钩子给卡主了——而且你的核心需求特别明确:要完完整整保留原SVN提交者的姓名和邮箱,绝不想修改任何历史提交的身份信息,这太合理了,迁移代码历史本来就该原汁原味对吧?

先帮你拆解下问题本质:
远程仓库的这个钩子在做身份校验,它默认要求你推送的所有提交里的committer/author邮箱,必须和你当前Git配置的user.email完全一致。但你是在迁移历史提交,这些提交的作者都是原SVN仓库的老开发者,肯定和你的个人邮箱对不上,所以钩子直接把你的推送给拒了。

接下来给你最直接的解决方案——其实远程的错误提示里已经明明白白告诉你了:

If you need to commit content while maintaining the original author / committer, please let the administrator know.

没错,你现在最该做的就是联系Git仓库的管理员,把你的情况说清楚:

  • 你正在执行SVN到Git的历史迁移工作
  • 这些待推送的提交都是原SVN仓库的历史代码,所有作者/提交者信息都是真实的开发者身份,必须完整保留
  • 请求管理员临时调整pre-receive钩子的校验规则,或者给你的账号开通例外权限,允许你推送带有其他作者/提交者信息的历史提交

为什么这是唯一符合你需求的解?

  • 你本地的Git配置完全没问题(你已经确认过本地和全局的user.name/user.email都正确)
  • 绝对不能用git commit --amend --reset-author或者批量修改提交身份的命令,这会彻底破坏原有的历史提交信息,完全违背你的初衷
  • pre-receive钩子是远程仓库端的强制校验逻辑,作为普通用户你没有权限绕过,必须管理员配合调整

另外,你可以直接把远程返回的错误信息复制给管理员,他们一看就懂——毕竟这个钩子的提示里已经预留了“保留原作者信息”的处理通道,说明团队早就考虑过这种迁移场景了。

如果是你自己搭建的Git服务器,那你可以直接修改pre-receive钩子脚本,去掉那个邮箱匹配的校验逻辑;但看你的错误信息,应该是团队共用的仓库,所以找管理员是最快的路径。

有其他细节的话随时补充,我再帮你细化方案~

火山引擎 最新活动