你的代码里为什么有“AI”的签名?聊聊 Co-Authored-By: Claude

最近,很多开发者在使用 Claude Code 这类 AI 编程助手时,发现了一个有趣的现象:在执行 git commit 后,提交信息里自动多了一行:

Co-Authored-By: Claude <noreply@anthropic.com>

不少朋友对此感到疑惑:我又没和别人结对编程,这个“共同作者”是哪来的?它会影响我的代码贡献吗?今天我们就来聊聊这行签名背后的故事。

一、Co-Authored-By 是什么?

首先,我们得认识一下 Co-Authored-By 这个 Git 提交信息的“尾巴”(官方术语叫 trailer)。

在多人协作的项目中,经常会出现多人共同完成一个提交(Commit)的情况,比如经典的结对编程。但 Git 的设计里,一个提交只能有一个作者(Author)。为了解决这个问题,GitHub 和 GitLab 等平台引入了一个约定:在提交信息的末尾加上 Co-Authored-By: 姓名 <邮箱>

这样,平台就能识别出这个提交的“共同作者”,并将贡献也计入他们的名下。这不仅仅是一个形式,它关乎对每一位参与者工作的公平认可,在开源社区和团队协作中是个很重要的实践。

二、AI 为何成了你的“共同作者”?

理解了 Co-Authored-By 的背景,就不难理解 AI 的行为逻辑了。最新的 AI 编程助手,如 Claude CodeOpenCode,在自动执行 git commit 时,默认会将自己添加为共同作者

你可以把这看作是 AI 助手在主动声明:“这个提交的部分代码是由我生成的,我参与了这次协作。”这是一种透明度的体现,明确了人类开发者与 AI 在代码创作中的共同参与关系。

甚至在一些大型项目(如 Linux 内核)的讨论中,社区也开始倡议 AI 助手必须以 Co-developed-by 或类似标签来标识贡献,以确保整个开发过程的透明度。

三、为什么有时候关不掉它?

如果你想关闭 Claude Code 的这个自动签名功能,理论上可以通过修改其配置文件 ~/.claude/settings.json,将 includeCoAuthoredBygitAttribution 设置为 false

但是,根据许多开发者的反馈,在 Claude Code 的某些版本中,这个设置可能不生效。这很可能是一个程序上的 Bug,意味着即使你明确关闭了功能,签名依然会被强行加上。

四、总结:这是好事,还是困扰?

总的来说,提交记录中的 Co-Authored-By: Claude 签名,本身是透明、合理的协作标注。保留它, 可以帮助团队成员了解 AI 的参与情况,符合行业推崇的透明度原则。

但如果你出于某些原因必须清除它(例如,公司政策不允许),目前最可靠的方案可能不是在设置里点选,而是通过技术手段强制移除

🛠️ 一个可行的终极方案:Git Hook

如果配置不生效,你可以使用一个 Git Hook(钩子) 来“暴力”移除。在你的项目 .git/hooks/ 目录下,创建一个 commit-msg 文件(如果没有则新建),内容如下:

#!/usr/bin/env bash
# 从提交信息中移除 Claude 的签名行
sed -i '' '/^🤖 Generated with \[Claude Code\]/d' "$1"
sed -i '' '/^Co-Authored-By: Claude/d' "$1"

给这个文件添加执行权限后,每次提交时,钩子都会自动把这两行内容从提交信息中删掉。当然,如果未来这个签名格式发生了变化,脚本也需要随之调整。

AI 正在深刻改变我们的编程方式,而这些小小的“签名”,正是这个新时代在代码库中留下的一个注脚。


📌 相关阅读:想要了解更多关于 Co-authored-by 的使用规范,可以参考 Git 官方文档 或相关社区的实践指南。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐