如何从 Git 提交中去掉 Co-Authored-By Claude
Claude Code 会给你的提交加上 Co-Authored-By 尾注,给你的 pull request 加上一行 Generated with Claude Code。去掉它们的设置、该放进哪个文件,以及如何清理已经推送的提交。
让 Claude Code 提交,信息末尾就多了一行不是你写的:Co-Authored-By: Claude Opus 4.6 <[email protected]>。用它开 pull request,描述末尾会多出机器人表情和“Generated with Claude Code”。两者都不是 bug,都来自同一设置,一分钟就能改。
本指南介绍这个设置、放进哪个文件才能作用于你自己、一个项目或整个团队、你可能还留着的已弃用键,以及如何清理已带这一行的提交。关于 Claude Code 的事实来自其设置参考文档,于 2026 年 11 月 12 日在 Claude Code 2.1.318 上查阅。
简短的答案。 把这段放进 ~/.claude/settings.json:
{
"attribution": {
"commit": "",
"pr": ""
}
}
新提交不再带尾注,新 pull request 也没有那一行。修改前的提交会保留它,直到你改写。
Claude Code 加了什么,加在哪里
Claude Code 在三处添加归属信息,每处在 attribution 下都有自己的子键。
| 位置 | Claude Code 默认添加的内容 | 子键 |
|---|---|---|
| 提交信息 | 一条尾注:Co-Authored-By: <model> <[email protected]> | attribution.commit |
| PR 描述 | 一个机器人表情和“Generated with Claude Code” | attribution.pr |
| 云端或 Remote Control 会话的提交或 PR | claude.ai 会话链接,在提交上是 Claude-Session 尾注 | attribution.sessionUrl |
尾注里的名字是提交时所用的模型。所以这一行这周是 Claude Opus 4.6,下周是 Claude Sonnet 4.6,搜索这个问题时也才会出现那么多模型名。Claude Code 认出是 Claude 模型但无法确认版本时,只写 Claude。自定义 ANTHROPIC_BASE_URL 背后的模型根本不是 Claude 模型时,写 Claude Code。由子代理提交时,尾注写子代理的模型。
这一行不是 git hook,而是 Claude 自己写提交或 PR 时,Claude Code 让 Claude 加上的。你在终端里自己做的或其他工具做的提交,永远不会带它。
用 attribution 设置关掉它
attribution 接受一个三部分的对象,或用 false 全部关掉。
| 值 | 效果 |
|---|---|
"commit": "" | 提交不带尾注 |
"pr": "" | PR 描述里不带归属行 |
"sessionUrl": false | 云端或 Remote Control 会话的提交和 PR 不带 claude.ai 会话链接 |
"attribution": false | 一次隐藏全部三项。需要 Claude Code 2.1.281 或更高 |
简写很诱人,但先看版本那一行。低于 2.1.281 的 Claude Code 会拒绝 "attribution": false,而且不只是忽略这个键:它会跳过包含它的整个设置文件,连同你的权限、hook 和模型。同一文件若在不同版本的机器上读取,就用完整写法:
{
"attribution": {
"commit": "",
"pr": "",
"sessionUrl": false
}
}
运行 /status 确认文件已加载:Setting sources 一行列出 Claude Code 读取的每个文件。已打开的会话若还在加那一行,就新开一个。
放哪个文件:你自己、一个项目,还是整个团队
这个键在所有设置文件里都有效,作用于谁由文件决定。
| 文件 | 作用于谁 |
|---|---|
~/.claude/settings.json | 你,在这台机器的所有项目里 |
项目中的 .claude/settings.json | 在项目里工作的所有人,从你提交该文件起 |
项目中的 .claude/settings.local.json | 你,仅限此项目。Claude Code 创建它时会将其排除在 git 之外 |
| 组织下发的 managed settings | 组织下发到的所有人 |
两个文件都设置了这个键时,层级高的胜出:managed settings,其次是命令行的 --settings、项目本地文件、项目共享文件,最后是你的用户文件。由此有两种情况。团队提交了一个特意保留尾注的文件时,你自己的 .claude/settings.local.json 只对你覆盖它,不影响别人。组织在 managed settings 里设置了 attribution 时,你写什么都改变不了。
你也可以在 CLAUDE.md 里让 Claude 别加这一行,Claude Code 会告诉 Claude:你关于归属的指令优先于它的默认行,除非这一行来自 managed settings。区别在性质:设置去掉 Claude Code 要求的文本,指令是模型读后执行的。用设置。
旧的 includeCoAuthoredBy 键
attribution 之前,开关是 includeCoAuthoredBy。它自 Claude Code 2.0.62 起弃用,但仍会被读取:
"includeCoAuthoredBy": false同时隐藏提交尾注和 PR 那一行;- 一旦设置
attribution.commit或attribution.pr,Claude Code 就忽略includeCoAuthoredBy,对你没设置的那一项用默认文本。
第二条规则正是尾注常又冒出来的原因。你原有 includeCoAuthoredBy: false,又为了只去掉 PR 那行加了 "attribution": {"pr": ""},提交尾注就又出现了,因为现在由 attribution 决定,而 commit 没设置。改用 attribution,两部分都设置。
替换它,而不是删掉它
有些团队想记录哪些提交有 AI 协助,只是不用那一行。attribution.commit 接受任意文本,包括尾注。git 只从信息最后一段读取尾注,所以把它们放在一起,放在末尾:
{
"attribution": {
"commit": "Assisted-by: Claude Code"
}
}
把它提交到项目的 .claude/settings.json,每位队友的 Claude Code 都会写同一行。
已经带有尾注的提交
这个设置只影响之后写的提交。已有的提交该用什么工具,取决于它们走了多远。
最后一次提交,还没推送:amend 它,在编辑器里删掉那一行。
git commit --amend
未共享分支上的多个提交:rebase 并逐个改写。
git rebase -i origin/main
整个历史:git filter-repo 一次改写每条提交信息。它需要全新的克隆,且要单独安装:
git filter-repo --message-callback '
return re.sub(rb"(?mi)^Co-Authored-By: Claude[^\n]*<noreply@anthropic\.com>\n?", b"", message).rstrip(b"\n") + b"\n"
'
改写有代价,在共享分支上通常比那一行更高。第一个被修改的提交之后,每个提交哈希都是新的:已推送的分支需要强制推送,每位协作者都得从新历史重新开始,基于旧提交的 PR 会失效,签名的提交会丢失签名。合并前的个人分支,放手去做。别人已拉取的 main 分支,就别动,设置好键管住以后。
尾注在 GitHub 上起什么作用
GitHub 会读取 Co-authored-by 尾注,邮箱地址属于某个 GitHub 账户时,就在提交上显示这位共同作者。2025 年 6 月,anthropics/claude-code 仓库的两个 issue(#1653 和 #1655)报告提交通过这个地址被归到一个与 Anthropic 无关的 GitHub 账户;两者都已关闭。无论这个地址某天指向谁,去掉尾注都会让之后的提交不再有这位共同作者,且只影响之后的提交。
其他 CLI 怎么做
给自己工作署名的不只是 Claude Code,每个 CLI 都有自己的开关。
- Codex. 在我们 2026 年 11 月 12 日读到的
openai/codex源码中,你的工作区启用归属信息时,Codex 会在提交上加Co-authored-by: Codex <[email protected]>,在 PR 正文里加“Generated with Codex.”,这项策略在会话开始时拉取。策略关闭时,Codex 被告知两行都不加。 - Aider. 它不加尾注,而是在 git 作者和提交者名字后加“(aider)”。
--no-attribute-author和--no-attribute-committer可关掉它,--attribute-co-authored-by则改为加Co-authored-by尾注。
我们在 AgentsRoom 里怎么做
我们每天在同一批仓库上运行多个代理,Claude Code 旁边是 Codex 等,提交正是它们工作汇合的地方。有两种情况,规则不同。
代理在自己终端里自行提交时,信息由它的 CLI 写,所以适用 CLI 自己的设置:Claude Code 用 attribution,Codex 用工作区策略,Aider 用命令行参数。
你从 AgentsRoom 提交时,无论是“更改”标签页、审查模式、代理关闭时的自动提交,还是手机应用的“更改”界面,提交都由 AgentsRoom 写,没有 CLI 会加尾注。末尾放的是 AgentsRoom 的提交署名,由你设置。默认它加一行,写明文件在提交中的每个代理的角色和所花时间:
bug : Fix the login redirect
AgentsRoom-Agent: fullstack; time=42m
每部分都是 设置 > Git > 提交署名 里的独立开关,可针对你的账户、一个项目文件夹或单个项目:代理角色、耗时,以及默认关闭的成本、配额占比和你输入的提示词。关掉代理和耗时,提交就和以前一模一样。我们自己的仓库保留角色:在四个 CLI 都会提交的仓库里,模型名说明是哪个模型写的代码,角色说明它在做什么工作,三周后某个改动弄坏东西时,我们找的正是这个。我们公开的更新日志也读取这一行,展示每个版本有哪些代理参与。
想留下改动背后的推理,Commit Context 会在同一尾注块里加上指向代理对话的链接。连信息都不想写,AI 提交消息会根据 diff 起草。
常见问题
如何从我的提交中去掉 Co-Authored-By Claude?
在 ~/.claude/settings.json 里加上 "attribution": {"commit": "", "pr": ""}。此后在这台机器的所有项目里,Claude Code 不再给它写的提交加 Co-Authored-By 尾注,也不再给它开的 PR 加 Generated with Claude Code 一行。Claude Code 2.1.281 及以上,"attribution": false 一个值即可全部隐藏。修改前的提交保留尾注。
includeCoAuthoredBy 还能用吗?
能用,但自 Claude Code 2.0.62 起已弃用。includeCoAuthoredBy: false 同时隐藏提交尾注和 PR 那一行,除非较新的 attribution 键设置了 commit 或 pr,这时以 attribution 为准。新配置请用 attribution。
为什么尾注写的是 Claude Opus 4.6 或 Sonnet 4.6,而不是 Claude?
尾注写的是提交时所用的模型,会随你的模型变化。Claude Code 无法确认确切版本时只写 Claude,自定义 ANTHROPIC_BASE_URL 背后不是 Claude 模型时写 Claude Code。这个设置会去掉所有这些变体。
如何从已经做好的提交里去掉尾注?
最后一次提交:运行 git commit --amend 删掉那一行。几个未推送的提交:用 git rebase -i 逐个改写。整个历史:用带 message callback 的 git filter-repo,在全新克隆上去掉每个提交里的那一行。改写会改变第一个被改动提交之后所有提交的哈希,所以已推送的历史需要强制推送,每位协作者都得从新历史重新开始。
公司能强制重新打开归属信息吗?
能。组织下发的 managed settings 位于你能控制的所有文件之上,在那里设置的 attribution 值会覆盖你的用户、项目和本地设置。在 Claude Code 里运行 /status:Setting sources 一行显示是否有 managed 来源作用于你。
去掉尾注会掩盖我用过 AI 吗?
它只从提交信息里去掉一行,别的都不变。这个设置由 Claude Code 自己提供,其文档也没要求保留这一行。不过有些项目和雇主要求贡献者声明 AI 协助,关闭前请先读读你要推送的仓库的规则。
下载 AgentsRoom
在一个窗口中运行你所有项目的所有 AI 代理。
配套应用:随时随地监控你的 Agent
使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。
把 Bug 和需求直接发送到您的公开待办清单。
继续阅读
Claude Code mod:它是什么,以及我们给每个代理都装上的那个 mod
mod 是一种让 JavaScript 在 Claude Code 内部运行的插件。它能做什么、由哪三个文件组成、如何加载和测试,以及我们给每个代理都装上的那个 mod。
阅读全文减少 MCP 令牌消耗:我们如何把工具定义削减 60%
代理能调用的每个 MCP 工具,都是模型可能在每次请求时读取的一段 JSON。我们的工具大约有 95,000 个令牌。本文介绍如何在两分钟内测量你自己的工具,我们在不删除任何工具的前提下削减了什么,以及防止它再次膨胀的预算检查。
阅读全文写代码用哪个 AI 最好?1,200 位开发者实际启动的模型
28 天内 205,366 次代理启动:Opus 第一,GPT-6.1 Sol 第二,一半账号用的是我们默认推荐的模型。这些数字能证明什么,又不能证明什么。
阅读全文
