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

目录

一、概述

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

二、常见术语

2.1 基本术语

术语 含义
Open Source(开源) 源码公开、自由使用、修改和分发的软件模式。
FOSS(Free and Open Source Software) 自由开源软件的统称,强调"自由使用"和"源代码开放"。
Fork(派生) 从现有项目复制代码库,独立开发新版本。GitHub 上很常见。
Pull Request(PR) 提交代码变更请求,让项目维护者审查合并代码。
Merge(合并) 将分支上的代码整合进主线代码库(通常是mainmaster)。
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命令参数总结及实例讲解附实例掌握

相关推荐
hhwyqwqhhwy7 小时前
linux 驱动开发相关
linux·驱动开发
NocoBase10 小时前
8 个最佳 Google Sheets 替代方案(附成本与能力分析)
低代码·开源·github
8***v25711 小时前
开源模型应用落地-FastAPI-助力模型交互-进阶篇-中间件(四)
开源·交互·fastapi
用户843164894943215 小时前
pve ui 绝美ui 拒绝原生ui
开源
l***775216 小时前
开源的不需要写代码的爬虫maxun
爬虫·开源
隐语SecretFlow16 小时前
【隐语Secretflow】一文速通隐私计算节点Domain
开源·资讯
HelloGitHub18 小时前
《HelloGitHub》第 116 期
开源·github
周杰伦_Jay18 小时前
【 2025年必藏】8个开箱即用的优质开源智能体(Agent)项目
人工智能·机器学习·架构·开源
偶像你挑的噻1 天前
11-Linux驱动开发-I2C子系统–mpu6050简单数据透传驱动
linux·驱动开发·stm32·嵌入式硬件