Files
HomeAgent/.mailmap
pi 5250ca35ea fix(mailmap): 归并目标改为 GitHub noreply,消除幽灵贡献者
★ 根因是我把归并目标写成了 `JianFeeeee@users.noreply.gitcode.com`
  —— 那是**GitCode 的 noreply 域,GitHub 不认**。
  而 459 个提交(早期历史的大头)用的正是它,GitHub 无法把它们关联到
  任何本地账号,只能用启发式挂上一个**不相干的账号**当贡献者
  (实测出现过 linu223xprob1e)。

  ⇒ mailmap 把提交「归并到」某邮箱,等于告诉 GitHub「这些提交属于这个身份」;
    归并到一个它不认识的域,反而**制造**幽灵贡献者。
  ★ 教训:目标必须是**目标平台认的**标识,不是「看起来像匿名邮箱就行」。

归并目标改为标准格式 109188060+JianFeeeee@users.noreply.github.com
(id + 登录名,从 GitHub API 实测得来,非猜测)。

本地实测(origin/main 全历史 765 提交):
  归并前:459 gitcode noreply / 135 root@qq / 51 JianFeeeee@root@qq / 33 jianf…
  归并后:745 JianFeeeee <109188060+JianFeeeee@users.noreply.github.com>
          19 HomeAgent Agent(刻意不归并,区分自动化提交)
           1 pi(自动化 agent)
           1 jianf <â^@2198972886@qq.com>  ← 坏字节,mailmap 治不了

最后 1 条需改写历史(邮箱前缀带 3 个坏字节,文本文件无法表达),
另开一次操作处理。
2026-10-05 11:51:13 +08:00

59 lines
3.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# .mailmap —— 提交身份归并
#
# 为什么需要:GitHub 的 Contributors 按**提交邮箱**归并身份,而本项目历史里
# 同一个人的提交来自多个邮箱(本地 root、个人 QQ、GitCode noreply、
# GitHub noreply),于是列表里出现若干「虚拟贡献者」。
#
# 本文件只影响**展示层**(git log --use-mailmap / GitHub Contributors),
# 不改写任何提交对象,历史 SHA 全部保持不变。
#
# ★★★ 归并目标为什么必须是 GitHub 的 noreply(2026-10-05 踩坑)
#
# 原先归并到 `JianFeeeee@users.noreply.gitcode.com` —— 那是**GitCode 的
# noreply 域,GitHub 不认**。而 459 个提交(占大头的早期历史)用的正是
# 它,于是 GitHub 无法把它们关联到任何本地账号,只能用启发式挂上一个
# **不相干的账号**当贡献者(实测出现过linu223xprob1e)。
#
# ⇒ mailmap 把提交「归并到」一个邮箱,等于告诉 GitHub「这些提交属于这个
# 身份」;归并到一个它不认识的域,反而制造幽灵贡献者。
#
# ★ 教训:mailmap 的目标必须是**目标平台认的**标识,
# 不是「看起来像匿名邮箱就行」。
#
# ★★ 写法要点(都实测过):
#
# ① 右端必须写成「历史姓名 + 历史邮箱」成对形式。只写邮箱时 git 要求提交的
# author name **也为空**才匹配,而历史提交都带名字 ⇒ 静默失效且不报错。
#
# ② 注释里**不要写出形如映射的示例行**。git 只认行首 `#` 作为注释起点;
# 缩进注释里若出现「姓名 邮箱」或「若干空格 + 邮箱」,仍会被解析成
# 真实条目,且同名目标**后者覆盖前者** ⇒ 真正的映射被悄悄顶掉。
#
# ③ 坏字节邮箱无法在文本文件里表达(提交 58ef728 的 author 邮箱前缀带
# 3 个坏字节)。mailmap 对它**无效**,只能改写历史。
#
# 注意:HomeAgent Agent <agent@homeagent.local> **不归并** —— agent 的自动提交
# 保留独立身份,便于区分人类提交与自动化提交。
# ── 主身份:GitHub noreply(GitHub 认这个;109188060+登录名 是标准格式)──
JianFeeeee <109188060+JianFeeeee@users.noreply.github.com>
# ── 历史主身份:GitCode noreply(459 个提交,最大头)──
JianFeeeee <109188060+JianFeeeee@users.noreply.github.com> JianFeeeee <JianFeeeee@users.noreply.gitcode.com>
# ── 本地 root ──
JianFeeeee <109188060+JianFeeeee@users.noreply.github.com> root <root@qq.com>
JianFeeeee <109188060+JianFeeeee@users.noreply.github.com> JianFeeeee <root@qq.com>
# ── 个人 QQ 邮箱(历史上配过 jianf 与 JianFeeeee 两个名字)──
JianFeeeee <109188060+JianFeeeee@users.noreply.github.com> jianf <2198972886@qq.com>
JianFeeeee <109188060+JianFeeeee@users.noreply.github.com> JianFeeeee <2198972886@qq.com>
# ── 本地开发身份 ──
JianFeeeee <109188060+JianFeeeee@users.noreply.github.com> JianFeeeee <jianfeeeee@homeagent.local>
JianFeeeee <109188060+JianFeeeee@users.noreply.github.com> dev <dev@local>
JianFeeeee <109188060+JianFeeeee@users.noreply.github.com> root <root@minecraft-server>
JianFeeeee <109188060+JianFeeeee@users.noreply.github.com> JianFeeeee <109188060+JianFeeeee@users.noreply.github.com>
# ── pi(自动化 agent,保留独立身份)──
pi <pi@local> pi <pi@local>