如何在 Git Commit Message 中正确提及共同贡献者(Co-authored-by 实践指南)

Cursor Git 提交自动添加 Co-authored-by 原因与关闭指南 Co-authored-by 是 Git 原生支持的协作者署名机制,常用于多人协作或 AI 辅助开发场景。其原理是通过 commit message 末尾添加标准格式行实现责任归属追溯,技术价值在于提升代码生成过程的可审计性与合规透明度。典型应用场景包括开源项目贡献溯源、企业级 AI 代码合规审查、CI/CD 流水线权限校验等。Cursor 编辑器默认启用该机制,在 AI 参与代码变更时自动注入 `Co-authored-by` 标记,开发者可通过全局配置、工作区设置或 Git 钩子等方式灵活控制。理解并合 阅读详情

在现代软件开发中,协作是常态。无论是结对编程、代码审查,还是多人共同完成一个功能模块,经常会出现多个开发者共同贡献同一个 commit 的情况。然而,Git 默认的 author 字段只能记录提交者(通常是执行 git commit 的人),这可能导致另一位贡献者的努力被忽视。

幸运的是,GitHub 提供了一种简单而标准的方式——使用 Co-authored-by 来在 commit message 中明确标注共同贡献者。本文将详细介绍这一机制的原理、用法和最佳实践。


一、为什么需要提及共同贡献者?

在开源社区或团队协作中,公平地认可每位开发者的贡献至关重要。以下是几个典型场景:

  • 你和同事结对编程,一人写代码,另一人实时审查并提出修改建议,最终由你执行提交。
  • 你在同事的草稿基础上进行了大量重构和补充,最终形成一个完整的 commit。
  • 一位贡献者提供了核心逻辑,另一位负责文档和测试,你们共同完成了这次提交。

在这些情况下,仅记录一个 author 是不公平的。Co-authored-by 正是为了弥补这一不足而设计的。


二、什么是 Co-authored-by?

Co-authored-by 是一种 commit message trailer(提交信息尾部标记),被 GitHub、GitLab 等平台广泛支持,用于声明该 commit 有多个贡献者。

当你在 commit message 中添加:

Co-authored-by: Alice <alice@example.com>

GitHub 会识别该字段,并在提交记录、Pull Request 和贡献图中将该 commit 同时归功于原始作者和被提及的共同作者。

✅ 支持平台:

  • GitHub(完全支持,贡献图中显示双作者)
  • GitLab(支持,但贡献统计可能略有差异)
  • Bitbucket、Gitee 等也逐步支持类似机制

三、Co-authored-by 的标准格式

Co-authored-by: Full Name <email@example.com>
  • Full Name:贡献者的真实姓名或 GitHub 用户名。
  • email@example.com:必须是该用户在 GitHub 上关联的邮箱地址,否则无法正确关联账号。

🔍 如何查找 GitHub 用户的提交邮箱?

  1. 访问其 GitHub 主页。
  2. 进入其仓库的 “Commits” 页面。
  3. 点击任意 commit,查看 author 字段中的邮箱。
  4. 或使用 GitHub 提供的隐私邮箱格式:username@users.noreply.github.com

示例:

Co-authored-by: awan-deng <awan-deng@users.noreply.github.com>
Co-authored-by: 张三 <zhangsan@gmail.com>

四、实际操作:如何添加 Co-authored-by

场景 1:尚未提交(推荐方式)

git add .
git commit -m "feat: 实现用户登录功能

- 添加 JWT 认证逻辑
- 集成 OAuth2 第三方登录
- 修复登录状态持久化问题

Co-authored-by: awan-deng <awan-deng@users.noreply.github.com>"

场景 2:已提交,需修改(使用 --amend)

git commit --amend -m "feat: 实现用户登录功能

- 添加 JWT 认证逻辑
- 集成 OAuth2 第三方登录
- 修复登录状态持久化问题

Co-authored-by: awan-deng <awan-deng@users.noreply.github.com>"

⚠️ 如果已推送到远程仓库,需使用:

git push --force-with-lease

请确保团队知晓此操作,避免影响他人工作。

场景 3:多人协作,使用 Git 的 --author 参数

如果你是代他人提交,可以指定原始作者:

git commit --author="awan-deng <awan-deng@example.com>" -m "..."

但更推荐使用 Co-authored-by,因为它更透明且支持多作者。


五、多个共同作者怎么办?

你可以添加多个 Co-authored-by 行:

Co-authored-by: Alice <alice@example.com>
Co-authored-by: Bob <bob@example.com>
Co-authored-by: Charlie <charlie@example.com>

GitHub 会识别所有标记,并将 commit 归功于所有人。


六、最佳实践建议

  1. 尽早沟通:在提交前与合作者确认是否需要添加 Co-authored-by。
  2. 使用正确邮箱:确保邮箱与 GitHub 账户绑定,否则无法关联贡献。
  3. 保持消息清晰:Co-authored-by 应放在 commit message 末尾,前后空行分隔。
  4. 团队规范:在 CONTRIBUTING.md 中明确协作提交的规范。
  5. 避免滥用:仅在实质性贡献时使用,避免为轻微建议添加。

七、GitHub 上的效果展示

添加 Co-authored-by 后,你将在 GitHub 上看到:

  • ✅ 提交页面显示“Authored by A and B”
  • ✅ 贡献图(Contributions Graph)中,两位作者都会获得当日贡献标记
  • ✅ Pull Request 中明确列出所有作者

这不仅提升了透明度,也增强了团队成员的归属感和认可感。


八、最后最后最后

在 Git 中使用 Co-authored-by 是一种简单却极具意义的协作实践。它体现了开源精神中的尊重与公平,让每一位贡献者都能被“看见”。

下次当你和同事共同完成一个 commit 时,别忘了加上一句:

Co-authored-by: [姓名] <[邮箱]>

这不仅是技术操作,更是一种对协作文化的尊重。

git commit message编写指南 0. Commit message编写指南 【声明】参考angular代码规范及部分博客整理,仅学习记录,非商用。 1. 概述 日常开发中使用 git 提交代码要求一定要写 git commit message,否则就无提交代码。 commit message作为改动说明,保存在 commit 历史中,方便回溯。 规范的 log 不仅有助于他人 review, 还可以有效的输出 CHANGELOG,甚至对于项目的研发质量都有很大的提升。 规范git commit到底有哪些好处呢? 便于程序员对提交历史进 阅读详情

相关推荐

关闭 Cursor AI 自动署名:彻底禁用 Co-authored-by 注入

Co-authored-by 是 Git 支持的协作署名机制,用于标识多人合著的提交,其原理基于 commit message 中的特殊注释行,由 Git 解析并影响贡献者统计。该机制在 AI 编程工具(如 Cursor)中被用于满足开源透明度规范(如 OpenSSF AI Attribution Guidelines),但默认启用易污染提交历史、干扰企业合规与团队协作。实际应用中,它常与 Conventional Commits 规范冲突,且不参与代码逻辑,仅影响元数据。本文聚焦 Cursor 编辑器如何

weixin_27791839的博客 287

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

AI编程助手如Claude Code在执行git commit时会自动添加Co-Authored-By: Claude签名,这源于Git协作中的共同作者标注惯例。该签名旨在透明化AI参与代码生成的事实,符合开源社区的贡献标注规范。虽然用户可通过配置文件关闭此功能,但部分版本存在失效问题。对于需要强制移除的情况,建议使用Git Hook脚本自动清理提交信息中的AI签名。这一现象反映了AI工具在开发流程中的深度整合,其签名机制既是对贡献透明度的保障,也引发了关于AI参与程度的行业讨论。

沐霜枫叶 464

告别黑窗口!用VSCode+Native Debug调试C/C++程序,比GDB命令行舒服多了

本文介绍了如何使用VSCode配合Native Debug扩展来调试C/C++程序,替代传统的GDB命令行方式。通过可视化调试环境,开发者可以更高效地管理断点、查看变量和调用栈,大幅提升调试效率。文章详细讲解了环境配置、核心调试功能及高级技巧,帮助开发者快速上手这一现代调试工具。

weixin_26833139的博客 250

git 常用分支操作

每个公司都有自己的一套git操作模式,但git的各种规范都是相同,下面总结了下常用开发规范操作 分支命名 master - 主干(默认) 一般master位于线上正式服务器的版本,每一次在 master 上的提交或合并都应该伴随着版本号的变更。(这样会更好的记录和版本回退) master 分支应保证是随时可发布的(可能包含Bug),每个发布的版本应打上 tag,便于回滚。对于有重大 Bug...

qq_24884955的博客 1026

微信小程序中蓝牙打印机中文编码处理:使用iconv-lite库

本文介绍了微信小程序集成蓝牙打印机时中文乱码问题的解决方案。由于打印机通常仅支持GBK/GB2312编码,而小程序使用UTF-8,导致中文显示异常。通过引入轻量级iconv-lite库进行编码转换,可高效解决该问题。文章详细说明了从库安装、编码转换到蓝牙发送的实现步骤,并提供了完整代码示例。关键注意事项包括编码验证、分段发送和兼容性测试。该方法经实际验证,能有效保障中文打印的准确性,适用于零售、物流等场景。

canglingyue的专栏 1310

命令行删除描述文件_写一个删除lock文件的skill脚本

来源:IC技能搬运工 作者:小目Cadence软件使用过程中偶尔会遇到文件被lock的情况,这是Cadence软件对文件的一种保护措施,大部分情况都是对用户友好的,但是偶尔也会给用户带来困扰,给工作带来的一定的不便。文件是如何被锁的Cadence在用户打开文件进行编辑的时候会在文件的同一级目录新建一个lock文件,用来标识文件的状态。一般情况下如果文件被正常关闭,这个lock文件会在...

weixin_39781452的博客 1352

Git常用规范

需要注意的是,使用message模板可以帮助我们规范化提交信息的格式和内容,但并不是所有的提交都需要按照模板来写。在实际开发中,我们应该根据实际情况灵活选择合适的提交信息,并确保提交信息的内容准确、清晰、简洁。总之,代码提交message规范的目的是为了让代码提交记录更加清晰明了,方便团队成员查看和理解提交的内容和目的,从而提高团队协作的效率和质量。其中,、、 和 # 是必填项, 可以省略, 不宜过长,最好不超过50个字符, 和 # 建议使用关键字和Issue编号的形式进行填写。

ityqing的博客 4143

手把手教你用CEFSharp打造防关联指纹浏览器(附完整代码)

本文详细介绍了如何基于CEFSharp框架,从零开始构建一个企业级的防关联指纹浏览器。通过剖析核心架构、多进程隔离实现、动态指纹混淆(如Canvas、WebGL)的实战代码,以及代理集成与性能优化,为跨境电商、广告投放等场景提供了一套可控、安全的开源解决方案。

fern8的博客 961

GitHub引入联合提交者功能

\看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!\\\GitHub开始支持一次提交归属多个作者。这个新功能旨在提升同一提交或pull request有多个开发者的协作体验,并确保每个代码作者的提交归属能体现在他们的贡献图和代码仓库统计中。\\据GitHub称,新功能是为了迎合一些组织日益增长的协作需求。这些组织,经常使用代码协作来加速初级开发者入职培养...

cpongo5 305

BitLocker磁盘锁定解决方法

摘要:本文介绍了BitLocker加密磁盘被锁的两种情况及解决方法。对于系统盘锁定,建议在微软账户中查找48位恢复密钥;数据盘锁定可尝试密码或恢复密钥解锁。若密钥丢失,可通过IT支持或数据恢复服务尝试解决。预防措施包括妥善备份密钥到微软账户和离线位置,避免随意更改系统硬件配置。BitLocker安全性高,恢复密钥是解锁关键,提醒用户务必做好备份以防数据丢失。(148字)

yueke06442300的专栏 2675

BevFusion (5):逐行代码详解

论文中给出了Bevfusion的架构图,它的输入是多视角的相机和点云图,经过两个特定的head,分别用于做检测任务和分割任务。图1 Bevfusion 结构图Bevfusion因为有两个模态的输入:多视角相机和点云,所以对应两个分支:相机分支和点云分支。相机分支:输入6个视角的图片后,提取特征,然后经VT(View Transformer)转换之后得到相机的Bev特征。激光雷达分支:输入点云数据,经过Encoder编码得到体素化Lidar特征,然后沿z方向展平,得到Lidar Bev特征。

@bangbang的博客 3714

Git 分支命令管理

总之,良好的分支命名规范可以让代码仓库更加规范、易于管理和维护,提高团队协作效率和代码质量。

火山上的企鹅 1183

从入门到精通|Yalmip+Cplex在电力系统中的应用(Matlab代码实现)

​ 火电成本包括运行成本、碳捕集成本,其中火电运行成本由运行维护成 本和发电煤耗成本构成,发电煤耗与其出力关系: ,F 为机组煤耗量(kg/h),P 为机组出力/MW;运行维护成本按照 0.5 倍煤耗成本考虑,碳捕集成本取决于碳排放量及碳捕集单价,火电机组相关参数如附表 1 所示,电煤价格为 700 元/t ​

weixin_46039719的博客 1552

一些常用的 Git 进阶知识与技巧

1. 同一电脑存在多个 Git 账号 假设我们在同一电脑上拥有多个 Git 账号,例如公司内部使用的是 Gitlab,个人使用的是 Github 或者 Gitee。那就会遇到一种情况,上班时想给个人开源项目提交代码,但是 Git 绑定的是公司的账号。 在这种情况下,我们可以让 Git 绑定多个不同的 ssh key,每个 ssh key 对应一个不同的 Git 服务器。 生成第一个 ssh key: ssh-keygen -t rsa -C "xxx@xxx.xx" 生成第二个 ssh key: ssh-

分享我的编程经验和学习心得 489

Arcgis加载在线地图(内涵各种在线地图)

这三个在线地图是最常用的在线地图,其他几个类型的在线地图请自行查看。,加载出在线图层说明连接成功,点击。1、首先打开Arcgis,找到。

爱吃雪糕的小布丁的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IDEA 中 Git Commit message 编写

IDEA Commit message 编写 参考: Commit message 和 Change log 编写指南 安装插件 Git Commit Template Create a commit message with the following template: (): <footer> 1. Header Header的部分只有一行,包括三个字...

只有变秃 才能变强 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ECC Git 工作流规则解析:Conventional Commits 提交规范、Co-Authored-By 归因控制与 PR 实战流程

本文以 ECC(The agent harness performance optimization system)仓库中的 [common-git-workflow.md](https://link.gitcode.com/i/0fe2b5cc9db9c59bc3f8d269bfbcab8e) 规则文件为核心,完整解析其定义的 Conventional Commits 提交格式、8 种提交类型、

gitblog_00607的博客 1028

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Cursor自动添加Co-authored-by署名的原理与关闭方案

Co-authored-by是Git支持的标准化协作署名机制,用于标识多人或工具共同贡献的代码提交。其原理基于RFC 822邮件格式,在commit message中以结构化字段形式嵌入,由Git解析并存入commit元数据。该机制本身不涉及权限或安全风险,但当被AI编辑器(如Cursor)默认启用时,可能引发署名合规性、知识产权归属及团队协作一致性问题。典型应用场景包括AI辅助开发中的贡献追溯、开源项目透明度建设、企业级代码审计与CI/CD自动化拦截。本文聚焦Cursor编辑器如何通过commit mes

weixin_30423065的博客 333

Git Commit Message 规范实践

本文总结了项目实践中的 Commit Message 规范。

小羊子的技术专栏 1724

Git Commit message 规范

Git Commit message 规范介绍格式HeaderBodyFooterRevert常用示例featfixdocsstylerefactorperftestchorerevert参考链接 介绍 在 Git 中,每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。这个操作将通过 git commit 完成。 git commit -m "芜湖~起飞" 上面代码的-m参数,就是用来指定 commit message 的。 如果一行不够,可以只执行 git commit

Wiliam的博客 5455

Git 提交的正确姿势:Commit message 编写指南

Git 提交的正确姿势:Commit message 编写指南 文章目录 一、Commit message 的作用 二、Commit message 的格式 2.1 Header 2.2 Body 2.3 Footer 2.4 Revert 三、Commitizen 四、validate-commit-msg 五、生成 Change log http://www.ruany......

一年又一年。的专栏 1992

git 提交还带 Co-Authored-By?经 TaoToken 通道时把 Claude Code 的 attribution 设空

把 ~/.claude/settings.json 里 attribution.commit 和 attribution.pr 都设为空字符串,Claude Code 经 TaoToken 通道提交时就不再追加 Co-Authored-By 署名。先确认通道已通,再改配置并重启,用 git log -1 --pretty=full 验证提交里只剩自己的作者信息。CLAUDE.md 只是提示词约束,时灵时不灵,settings.json 才是可靠开关。TaoToken 官网:https://taotoken.

weixin_42583683的博客 17

GIT 修改commit message

1、修改本次提交message 【git commit --amend】

weixin_39709292的博客 8850

Git关于commit的操作,修改message,合并commit,撤销commit

文章目录Git修改已提交commit的message信息修改最近一次commit的message修改之前commit的message合并commit合并连续的commit合并间隔的commit要合并的commit是最上级的情况 Git修改已提交commit的message信息 修改最近一次commit的message 执行 git commit --amend 进入编辑模式,这个commit是所...

Codes Catcher的博客 3179

Penpot 仓库 Git 提交规范全解:Commit Message 格式、emoji 类型与 AI 辅助署名指南

> 导读:本文以 Penpot 开源仓库的贡献规范为准绳,系统拆解其 Git 提交的完整约定——从“何时提交、如何规避无关改动污染”,到 `:emoji: 主语 + 正文 + AI-assisted-by` 的标准化提交信息骨架、18 类 emoji 的语义划分、`Closes #NNNN` 的 issue 关联方式,并结合 [CONTRIBUTING.md](https://link.gitco

gitblog_00039的博客 1061

Git 如何修改历史的 Commit message

Git 如何修改历史的 Commit message 1、修改最近一条Commit message 2、修改过去若干条 Commit message

cj_eryue的博客 6844
上一篇: Git 使用规范与命令使用场景详解
下一篇: 开源项目维护者指南:如何在本地测试贡献者提交的 PR
DennisReYoonjiho
博客等级 码龄7年 216粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值