如何从 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 会话的提交或 PRclaude.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 协助,关闭前请先读读你要推送的仓库的规则。

DevOps 工程师撰稿人前端开发者销售代表后端开发者教练与培训师软件架构师法律顾问QA 工程师财务与行政全栈开发者创意设计师移动开发者研究员安全工程师人事与招聘
项目经理翻译Git 专家数据分析师SEO 专家会计本地化专员公关与传播头脑风暴者运营与物流营销专员客户服务项目助理采购专员社群运营私人助理

下载 AgentsRoom

在一个窗口中运行你所有项目的所有 AI 代理。

下载 AgentsRoom免费

配套应用:随时随地监控你的 Agent

使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。

获取扩展程序
Chrome Web Store

把 Bug 和需求直接发送到您的公开待办清单。

像读聊天记录一样读代理

每个代理都有角色、头像和一条对话线程,读起来就像聊天应用。

对话视图

AgentsRoom 对话视图:AI 编程代理的工作以聊天线程呈现
多项目管理
多供应商
多代理运行
实时状态
文件差异与提交
移动应用
实时预览
代理团队
浏览器自动化
Backlog 驱动开发
提示词库
技能库
查看所有功能

继续阅读