开源相关术语及提交commit关键字总结

目录

一、概述

本文主要介绍开源相关的关键词解释,同时提交开源代码相关的commit关键字介绍。

二、常见术语

2.1 基本术语

术语 含义
Open Source(开源) 源码公开、自由使用、修改和分发的软件模式。
FOSS(Free and Open Source Software) 自由开源软件的统称,强调"自由使用"和"源代码开放"。
Fork(派生) 从现有项目复制代码库,独立开发新版本。GitHub 上很常见。
Pull Request(PR) 提交代码变更请求,让项目维护者审查合并代码。
Merge(合并) 将分支上的代码整合进主线代码库(通常是main或master)。
Upstream / Downstream 上游是原始项目,下游是派生项目或用户。贡献代码常说"提交到上游"。
CI/CD(Continuous Integration/Continuous Deployment) 持续集成 / 持续部署(自动构建、测试、部署代码)。
Issue / Bug Report 问题或漏洞报告,社区用户与开发者通过它沟通问题。
RFC (Request for Comment) 提出还不成熟的建议或补丁供讨论。

2.2 分支与维护策略相关

术语 含义
mainline / upstream 主开发分支或原始仓库。
downstream 下游仓库,通常是 fork 出来的项目。
fork 派生项目副本,用户可以在上面做实验或贡献。
LTS (Long Term Support) 长期支持版本,通常会接受 backport 修复但不引入新功能。
stable 稳定分支,发布用于生产环境。
devel / development 用于活跃开发的分支。
closed / end-of-life(EOL,停止维护 不再维护、更新、修复,处于"死亡"状态。
弃用(deprecated) / development 功能仍在,但标记为未来会删除,不推荐继续使用。

mainline (开发主线)

|

±-> stable --> 停止更新

| |

| ±-> LTS --> 长期维护

|

±-> deprecated (保留但劝你别用了)

±-> EOL (完全结束,别再用了)

2.3 常见工具

工具 类型 特点
GitHub Actions 集成式CI/CD GitHub平台内置,支持YAML工作流配置,适合GitHub托管项目。
GitLab CI 集成式CI/CD GitLab自带CI/CD功能,配置灵活,适合私有部署。
Jenkins 独立CI/CD引擎 功能强大、插件丰富,适用于复杂流程,但配置稍繁琐。
Travis CI 云CI平台 与GitHub集成良好,开源项目免费。已不如以前流行。
CircleCI / Drone CI / ArgoCD / Tekton 云或容器化CI/CD平台 多为现代云原生/微服务友好。

2.4 许可证相关

术语 含义
License(许可证) 开源项目规定的法律使用条款。
GPL(GNU General Public License) 强制代码开源(copyleft)许可证,要求派生作品也必须开源。
MIT License 非常宽松的许可证,允许自由使用、修改、分发,只需保留原始声明。
Apache 2.0 允许专利授权,适用于商业项目的宽松开源许可证。
Copyleft(反版权) 要求派生项目也必须开源的许可要求(如GPL)。
Permissive License(宽松许可证) 不强制派生项目开源(如MIT、BSD)。

2.5 发布与版本管理相关

术语 含义
tag 标签,用于标记版本(如 v1.0.0)。
release 发布一个版本,通常伴随 tag 并有 release note。
pre-release 预发布版本(如 beta、rc)。
snapshot 快照版本,可能是自动构建的中间版本。
semantic versioning (semver) 语义化版本控制规则(major.minor.patch)。

2.6 git参数相关

2.6.1 代码溯源
术语 含义
bisect 使用 Git 的 git bisect 功能进行回归分析,定位引入 bug 的提交。
blame 查看某一行代码是谁在什么时候改的。
stash 暂存当前修改,方便切换分支等操作。
submodule 在 Git 项目中嵌入另一个 Git 仓库作为子模块。
2.6.2 具体commit格式
bash 复制代码
driver: uart: Fix null pointer in callback on shutdown

The uart shutdown callback could be invoked even when the driver data
was not initialized correctly. This patch adds a null check before
invoking the shutdown callback to prevent potential crashes.

Signed-off-by: 王子健 <you@example.com>

<1行标题:做了什么>

<正文解释:做这个的理由、影响、背景>

Signed-off-by: 姓名 <邮箱>

2.6.3 commit关键字
动作词 含义 示例
Add 添加功能 Add support for async callback
Fix 修复 bug Fix invalid callback state on shutdown
Update 更新已有逻辑 Update callback registration logic
Remove 删除不再使用的代码 Remove legacy timer callback
Deprecate 弃用旧接口 Deprecate legacy IRQ callback style
Cleanup 清理无用代码 Cleanup unused callback definitions
Rework 重新设计 Rework PM callback for suspend/resume
关键词 用途 示例
callback 修改回调函数的注册、触发、参数等 Fix wrong parameters passed to DMA callback.
handler 修改中断或事件处理函数 Rework IRQ handler to avoid nested lock.
hook 调整框架调用钩子逻辑 Add power management hook for suspend.
init 初始化流程 Fix missing init call before registering callback.
null check 空指针检查(callback 常见) Add null check before invoking device callback.
missing 某逻辑缺失 Add missing callback for suspend event.
typo 拼写错误 Fix typo in callback function name.
refactor 重构逻辑 Refactor device callback flow for clarity.
regression 引入的问题 Fix regression introduced in callback logic.
race condition 竞争条件 Fix race in callback unregister path.
deadlock 死锁修复 Prevent deadlock in nested callback calls.
2.6.4 代码变更相关术语
术语 含义
backport 将某个变更(通常是 bugfix 或 security patch)从上游的较新分支移植到旧分支(如 LTS)。
frontport(较少见) 将旧版本分支的变更主动合并到上游(新分支),但一般更常见的术语是 cherry-pick。
cherry-pick 从另一个分支挑选特定提交应用到当前分支,保留原提交记录。
rebase 变基操作,改变提交的父提交,整理历史,常用于线性化提交历史。
merge 合并分支,产生一个新的合并提交。
squash 压缩多个提交为一个,常见于 PR 合并前清理提交历史。
patch 一个补丁文件,包含对源代码的更改;可以通过 git apply 应用。
2.6.5 提交commit
关键字 作用说明 示例
Fixes: 指明该补丁修复了某个特定的历史提交,后面跟着被修复的 commit 哈希及简短描述。用于稳定版本 backport。 Fixes: 1a2b3c4d ("net: fix leak in skb_free")
Cc: stable@vger.kernel.org 表示该补丁需要被考虑 backport 到稳定版本内核(如 LTS)。维护者会关注此标记。 Cc: stable@vger.kernel.org
Backport: 明确该补丁是从上游新版本回移到旧版本,一般附带原始 commit 信息,方便跟踪。 Backport: commit 1234567 ("driver: fix foo bug")
Link: 给出相关邮件讨论、bug 报告或补丁集的链接,便于维护者查阅上下文。 Link: https://lore.kernel.org/lkml/xxxxxxxxxxxxxx/
Reported-by: 说明是谁报告了这个问题,给出姓名和邮箱。 Reported-by: Alice <alice@example.com>
Tested-by: 说明谁测试过这个补丁,表明补丁经过验证。 Tested-by: Bob <bob@example.com>
Reviewed-by: 谁审查了该补丁,确认补丁的正确性和合理性。 Reviewed-by: Carol <carol@example.com>
Acked-by: 认可该补丁,但未参与测试或审查。 Acked-by: Dave <dave@example.com>
Signed-off-by: 开发者认证自己对补丁负责,必须包含,符合 DCO 规范。 Signed-off-by: Eve <eve@example.com>
Co-developed-by: 共同开发者,说明补丁由多人合作完成。 Co-developed-by: Frank <frank@example.com>
(cherry picked from commit ...) 标识该补丁是从另一个 commit 拷贝过来的,常用于 backport。 (cherry picked from commit abcdef1234567890)

Cc: 的含义和作用

Cc = 抄送(Carbon Copy)

在邮件提交补丁的过程中(如用 git send-email 发送 patch),Cc: 行上的人会收到该补丁邮件副本

让相关人员知晓这个改动,即使他们不是该补丁的直接作者或提交人

三、其他相关链接

1. git命令参数总结及实例讲解附实例掌握

相关推荐
LinXunFeng5 小时前
Draw Things 换装 LoRA 实战:用 Silo 秒装,同一提示词对比出图
人工智能·开源·aigc
暖核7 小时前
企业级开源监控解决方案:Zabbix 6.0 部署与配置全流程详解
开源·zabbix
不是万能的豆学长7 小时前
开发者分化与开源生态观察
开源
Flynt7 小时前
开源"间谍卫星"说数据全是真的,我把它的免key数据源挨个试了一遍
前端·开源·数据可视化
冬奇Lab8 小时前
开源项目第235期:REA — 让 AI Agent 逆向任何东西,从网站/Electron 应用一路分析到二进制层
人工智能·开源·资讯
wuyk55511 小时前
嵌入式驱动开发:量产级工程化实战(第9篇)——低功耗下的通信可靠性
c语言·驱动开发·stm32·单片机·嵌入式硬件
阿里云云原生12 小时前
HiRoute 开源:让 Agent 更能干,让模型订阅更耐用
开源
分布式存储与RustFS12 小时前
rclone 与 mc mirror:S3 对象存储同步,限速、过滤、断点续传实测对比
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
小弥儿14 小时前
GitHub今日热榜 | 2026-10-12:pytorch 上升四位
人工智能·pytorch·学习·开源·github
硅基手札14 小时前
【I2C 技术系列 08】I2C 控制器寄存器与 IP 架构
驱动开发·stm32·单片机·嵌入式硬件·mcu·架构·计算机外设