误推本地仓库至GitHub远程仓库却显示其他账号身份,如何修正及解决git filter-repo报错
基础场景
- 本地存在名为
a的仓库,已关联GitHub账号A-github下的远程仓库A - 本地存在名为
b的仓库,此前未关联任何远程仓库 - 在GitHub账号B-github下新建名为B的远程仓库,计划将本地仓库b的内容首次推送至该远程仓库
异常现象
- 推送成功后,远程B仓库页面已同步本地仓库b的全部提交记录,但首次推送的提交作者显示为A-github,关联的头像也与A-github账号下设置的一致
- 点击该提交条目上的作者名,会直接跳转到A-github的账号主页
- 异常的细节特征:这次错误署名的提交操作,并未记录在A-github账号概览页的贡献活动(Contribution activity)中
排查过程与诉求
- 初步推测问题出在本地仓库b的git config配置环节,执行
git config -l命令后发现,user.name和user.email存在重复配置,分别对应仓库a关联的A账号信息、仓库b本该使用的B账号信息 - 核心处理目标:
- 让git在操作本地仓库b、推送内容到远程B仓库时,使用对应B-github账号的正确身份
- 尽可能修正本次以A-github身份错误生成的推送提交
- 已完成的操作尝试:
- 通过包管理器安装了
git filter-repo工具,尝试通过批量修改提交信息的方法修正提交作者 - 编写了my-mailmap文本文件,按照
正确用户名 <正确邮箱> <旧邮箱>的格式填写内容,计划执行git filter-repo --mailmap my-mailmap命令,将所有带旧错误邮箱的提交,统一替换为B账号对应的正确用户名与邮箱;填写规则为:「正确用户名」和<正确邮箱>是希望替换成的提交作者与提交者信息,<旧邮箱>是提交日志中原先存在的错误邮箱,所有邮箱字段都在两端添加了尖括号,无法确认该填写方式是否合规 - 初次执行命令时仅返回「Python」字样,无其他执行输出,无法判断操作是否生效
- 后续排查确认
git-filter-repo依赖Python运行环境,通过Scoop安装Python后,再次执行上述命令,shell返回「Cannot read my-mailmap」的报错
- 通过包管理器安装了
- 目前相关讨论已偏离原问题方向,已单独发布新的问题排查具体报错,原提问到此关闭,感谢所有提供建议的参与者
内容的提问来源于stack exchange,提问作者somia
相关产品推荐
相关产品推荐

