目录
-
- 一、概述
- 二、常见术语
-
- [2.1 基本术语](#2.1 基本术语)
- [2.2 分支与维护策略相关](#2.2 分支与维护策略相关)
- [2.3 常见工具](#2.3 常见工具)
- [2.4 许可证相关](#2.4 许可证相关)
- [2.5 发布与版本管理相关](#2.5 发布与版本管理相关)
- [2.6 git参数相关](#2.6 git参数相关)
-
- [2.6.1 代码溯源](#2.6.1 代码溯源)
- [2.6.2 具体commit格式](#2.6.2 具体commit格式)
- [2.6.3 commit关键字](#2.6.3 commit关键字)
- [2.6.4 代码变更相关术语](#2.6.4 代码变更相关术语)
- [2.6.5 提交commit](#2.6.5 提交commit)
- 三、其他相关链接
-
- [[1. git命令参数总结及实例讲解附实例掌握](https://blog.csdn.net/Luckiers/article/details/114002124?spm=1011.2415.3001.5331)](#1. git命令参数总结及实例讲解附实例掌握)
一、概述
本文主要介绍开源相关的关键词解释,同时提交开源代码相关的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: 行上的人会收到该补丁邮件副本
让相关人员知晓这个改动,即使他们不是该补丁的直接作者或提交人