
一句话结论:GitHub 开始另记一枚已鉴权的 pusher,我四个口径都没取到。 现在该做什么:先答我今天要不要动我的东西,再去换你 CI 里认人的那行。
发生了什么:10 月 12 日进灰度,只给企业版
这条发布是 2026-10-12 来的,类型是 Release。它新增的是一枚 pusher 归属记录。
官方那页第一句说,每枚提交现在会持久记录真正推上去的那个已鉴权用户。这枚身份和 author、committer 并列出现在 UI 和 API 里。
同一页往下给了生效范围:limited public preview,只对 GitHub Enterprise 客户开放。

这次带来的不止一枚身份。还有一条新规则条件,名字逐字是 Committer must match pusher。
已确认的:那三句原文我逐字抄了
这条条件的理由,官方写得直白。
Commit author and committer fields are just strings that the pushing client supplies, so anyone with write access to a repository can set them to any name and email they choose.
这句是原话,出处就是上面那条 changelog。
已确认的有三件:日期与类型,列表页那一行是 Oct. 12 加 Release;持久、逐枚记录这个说法本身;还有那条新条件的名字。
没确认的也钉在这里:哪些仓库进了灰度,官方没写;GHES 的支持时间,这条 changelog 没提。
对谁有什么影响:免费计划没有可开的开关
灰度只开给企业版,免费计划没有开关。
那页 rulesets 文档写明 push rulesets 归 GitHub Team 计划的 internal、private 仓库。

三类人动作不同:
- 用 author 字段认人的脚本:今天就能改,改法见下面命令。
- 做安全响应和取证的:这枚身份取不到,别写进清单。
- 企业版管理员:找你的 account team,那盏灯才可能亮。
我落在第一种:博客仓库是免费计划,没有开关可拨。
我实测到的:四个口径都没取到
那行按 author 认人的命令我本地跑了。
GIT_AUTHOR_NAME="Fake Maintainer" GIT_AUTHOR_EMAIL="fake@octocat.dev" \
GIT_COMMITTER_NAME="Fake Maintainer" git commit -q -m x
两个字段照样能写成 Fake Maintainer <fake@octocat.dev>。git 2.23.0 没拦。
另外四个都取不到。REST 未鉴权和带 token 各跑一次,commit 对象里没有 pusher 键。
GraphQL 问 Commit 要这枚字段。报错原文是 Field 'pusher' doesn't exist on type 'Commit'。
事件流 PushEvent 只剩五个键。提交页面 HTML 里 pusher 是 null。
接下来盯什么:哪些仓库亮灯我没来源
提交页面里那枚开关,在哪些仓库是 true,我没来源。
它叫 showPusherAttribution,我这枚提交里是 false。GitHub 自己仓库的那枚也是 false。
我今天不动我的东西:博客仓库在免费计划,没有开关可拨;CI 里那行按 author 认人的脚本是我写的,我也不拿它当证据。
两个锚。如果 REST 的 commit 返回键里出现 pusher,这篇的四个读数全废,我重写。
那条新条件要是进了文档的规则清单,我就不用猜计划档。
FAQ · 常见问题
常见问题
GitHub 的 pusher 字段在 API 里怎么取到?
我四个口径全试了,全部取不到。REST 未鉴权和带 token 各跑一次,commit 对象里没有 pusher 键;GraphQL 向 Commit 类型要这枚字段直接被拒,报的是字段不存在;事件流 PushEvent 只剩五个键;提交页面的 HTML 里 pusher 是 null。
author 和 committer 字段随便就能伪造吗?
能,官方自己的理由写得很直白:这两个字段只是推送客户端提供的字符串,任何有仓库写权限的人都能填成任意名字和邮箱。我本地把 GIT_AUTHOR_NAME、GIT_AUTHOR_EMAIL、GIT_COMMITTER_NAME 一起设成假值提交一次,git 2.23.0 没拦,两个字段照样写成 Fake Maintainer 配 fake@octocat.dev。
我的个人仓库能开 push attribution 吗?
开不了。生效范围那句写的是 limited public preview,只对 GitHub Enterprise 客户开放;哪些仓库进了灰度官方没写,GHES 的支持时间这条 changelog 也没提。我博客仓库在免费计划,没有开关可拨;那枚 showPusherAttribution 在我这枚提交里是 false,GitHub 自己仓库的那枚也是 false。
End of article · 读完这一篇
- 实际用时
- —
- 章节覆盖
- —
- 约读字数
- —
微信支付
支付宝