From da73b8ae9bd243f99982eed4b8c74447897d0bef Mon Sep 17 00:00:00 2001
From: teapo1de <1916647616@qq.com>
Date: Mon, 19 May 2025 13:23:16 +0800
Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=E8=B4=A1=E7=8C=AE?=
=?UTF-8?q?=E6=8C=87=E5=8D=97=20(CONTRIBUTING.md)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
本次提交新增了贡献指南文档,详细说明了参与 `intro2oss` 项目的贡献流程、书写规范、提交规范及 Pull Request 规范。
---
CONTRIBUTING.md | 291 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 291 insertions(+)
create mode 100644 CONTRIBUTING.md
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..cf03590
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,291 @@
+# 贡献指南 (CONTRIBUTING.md)
+
+欢迎您参与 `intro2oss` 项目的贡献!为了确保项目的文档质量和风格一致性,我们制定了以下贡献规范。请您在开始贡献前仔细阅读。
+
+本文档参考了 [`Linux201` 项目规范](https://201.ustclug.org/spec/writing/),并结合了 `intro2oss` 项目的实际需求。
+
+## 目录
+
+- [贡献指南 (CONTRIBUTING.md)](#贡献指南-contributingmd)
+ - [目录](#目录)
+ - [开始之前:本地环境配置](#开始之前本地环境配置)
+ - [贡献流程](#贡献流程)
+ - [书写规范](#书写规范)
+ - [1. 从一级标题开始书写](#1-从一级标题开始书写)
+ - [2. 主要作者署名](#2-主要作者署名)
+ - [3. 为图片添加配字](#3-为图片添加配字)
+ - [4. 使用提示框 (Admonition)](#4-使用提示框-admonition)
+ - [5. 图片与附件文件](#5-图片与附件文件)
+ - [Commit 提交规范](#commit-提交规范)
+ - [Pull Request (PR) 规范](#pull-request-pr-规范)
+ - [风格指南参考](#风格指南参考)
+ - [反馈与建议](#反馈与建议)
+
+## 开始之前:本地环境配置
+
+为了能够顺利地贡献内容并验证您的修改,请先完成以下准备工作:
+
+1. **克隆仓库并配置上游 (remote upstream)**
+
+ ```bash
+ # Fork 本仓库到您的 GitHub 账户后执行
+ git clone https://github.com/<你的 GitHub 用户名>/intro2oss.git
+ cd intro2oss
+
+ # 添加上游仓库以便后续同步更新
+ git remote add upstream https://github.com/<原始仓库用户名>/intro2oss.git
+ ```
+
+2. **安装依赖**
+
+ ```bash
+ # 安装 Python 依赖
+ pip install -r requirements.txt
+
+ # 安装前端工具(如 markdownlint 等)
+ npm install
+ ```
+
+3. **`autocorrect`:中文排版/格式检查**
+ 项目地址:
+ 请参考项目文档进行安装和使用。
+
+4. **`markdownlint-cli2`:Markdown 格式检查**
+ 项目地址:
+ 请参考项目文档进行安装和使用。
+
+5. **本地预览文档**
+
+ ```bash
+ mkdocs serve
+ ```
+
+ 然后在浏览器中打开 `http://127.0.0.1:8000` 进行预览。
+
+6. **常用 Git 命令备忘**
+
+ ```bash
+ # 查看当前状态
+ git status
+
+ # 基于 main 创建工作分支
+ git checkout -b feature/your-feature-name
+
+ # 拉取上游最新代码(在 main 分支)
+ git checkout main
+ git pull upstream main
+ ```
+
+## 贡献流程
+
+我们欢迎各种形式的贡献,包括但不限于:
+
+- 修正错别字或语句不通顺的地方
+- 补充缺失的内容或更新过时的信息
+- 改进示例代码或添加新的示例
+- 提出宝贵的建议
+
+贡献流程如下:
+
+1. **Fork** 本项目到您的 GitHub 仓库
+2. 将您 Fork 的仓库 **Clone** 到本地
+3. 基于 `main` 分支创建一个新的 **Feature Branch** (例如 `git checkout -b feature/my-new-feature` 或 `fix/typo-in-chapter-one`)
+4. 在新的分支上进行修改和创作
+5. 确保您的修改符合本文档中的书写规范和格式要求
+6. 提交您的更改 (Commit)。请遵循 [Commit 提交规范](#commit-提交规范)
+7. 将您的分支推送到您 Fork 的远程仓库 (Push)
+8. 在 `intro2oss` 原始仓库创建一个 **Pull Request (PR)**,目标分支为 `main`。请遵循 [Pull Request (PR) 规范](#pull-request-pr-规范)
+9. 等待维护者 Review 您的 PR。如果需要修改,请及时更新
+10. PR 合并后,您的贡献就成功啦!
+
+## 书写规范
+
+### 1. 从一级标题开始书写
+
+在编写 Markdown 文档时,为了保持文档结构的一致性和可读性,所有单个 `.md` 文件应以 **一级标题 (`#`)** 作为开头。
+
+示例:
+
+```markdown
+# 这是一个文档的标题
+```
+
+### 2. 主要作者署名
+
+如果您编写了某个章节的主要内容,请在章节的开头添加主要作者提示框。
+
+格式如下,不同作者名字之间用中文全角顿号(「、」)分隔:
+
+```markdown
+!!! note "主要作者"
+
+ [@example][github.com/example]、[@new-contributor][github.com/new-contributor]
+```
+
+### 3. 为图片添加配字
+
+所有图片都应在图片下方添加配字说明,并在配字的下一行写上 `{: .caption }` 以应用特定样式。
+
+格式如下:
+
+```markdown
+
+
+图 1. 这是一张示例图片的配字说明
+{: .caption }
+```
+
+请确保配字简洁明了,并对图片内容进行必要的解释。图号建议按章节顺序编号(如图 1.1, 图 1.2, 图 2.1 等)或按文档顺序编号。
+
+### 4. 使用提示框 (Admonition)
+
+提示框(Admonition)是 `mkdocs-material` 主题的特色功能,能够有效突出显示特定信息。建议根据内容性质选用以下类型的提示框:
+
+- `note`:普通提示,用于补充说明或引人注意的信息
+
+ ```markdown
+ !!! note "请注意"
+
+ 这是一条普通提示信息。
+ ```
+
+- `warning`:警告信息,需要读者特别注意,否则可能出现非预期行为
+
+ ```markdown
+ !!! warning "警告"
+
+ 进行此操作前请务必备份数据。
+ ```
+
+- `danger`:危险操作提示,可能导致严重后果(如数据丢失、系统损坏等)
+
+ ```markdown
+ !!! danger "危险操作"
+
+ 以下命令将删除所有数据,请谨慎操作!
+ ```
+
+- `tip`:小技巧或建议,帮助读者更高效地学习或操作
+
+ ```markdown
+ !!! tip "小技巧"
+
+ 您可以使用快捷键 `Ctrl + S` 保存文件。
+ ```
+
+- `example`:用于展示示例代码、配置或操作步骤
+
+ ```markdown
+ !!! example "示例:Python 'Hello World'"
+
+ ```python
+ print("Hello, World!")
+ ```
+ ```
+
+- `question`:提出问题,引导读者思考
+
+ ```markdown
+ !!! question "思考题"
+
+ 为什么我们需要使用版本控制系统?
+ ```
+
+**可折叠的提示框:**
+
+您可以创建可折叠的提示框。
+
+- **默认折叠**:使用三个问号 `???`。用户需要点击标题才能展开内容
+
+ ```markdown
+ ??? note "这是一个默认折叠的提示框 (点击展开)"
+
+ 这里是折叠的内容。
+ ```
+
+- **默认展开**:使用三个问号加一个加号 `???+`。内容默认是可见的,但用户可以点击标题将其折叠
+
+ ```markdown
+ ???+ tip "这是一个默认展开的可折叠提示框 (点击折叠)"
+
+ 这里是默认展开的内容。
+ ```
+
+这种方式可以帮助您更好地组织较长的补充信息或示例,保持文档的整洁性,同时允许读者按需查看详细内容。
+
+### 5. 图片与附件文件
+
+所有图片都应在图片下方添加配字说明,并在配字的下一行写上 `{: .caption }` 以应用特定样式。
+
+格式如下:
+
+```markdown
+
+
+图 1. 这是一张示例图片的配字说明
+{: .caption }
+```
+
+请确保配字简洁明了,并对图片内容进行必要的解释。图号建议按章节顺序编号(如图 1.1, 图 1.2, 图 2.1 等)或按文档顺序编号。
+
+## Commit 提交规范
+
+为了保持 Commit 历史的清晰和可追溯性,请遵循以下规范:
+
+1. **Commit Message 格式**:
+ - 尽量使用英文撰写 Commit Message,以便更广泛的开发者理解。如果觉得困难,简洁的中文亦可,但避免中英文混杂
+ - 第一行:简要概括本次提交的目的,动词开头,例如 `Fix: correct a typo in installation guide` 或 `Feat: add new section on licenses`
+ - 后续行(可选):详细描述修改内容、原因和影响
+2. **原子性提交**:尽量保证每个 Commit 的原子性,即一个 Commit 只做一件事情
+3. **合并 Commit**:对于一系列微小修改或为了修复 CI/CD 问题而产生的多个 Commit,请在发起 PR 前或 Review 过程中,考虑使用 `git rebase -i` 将它们合并成一个或少数几个有意义的 Commit
+4. **Linting 问题**:如果在 `git commit` 后,CI/CD 流程(GitHub Actions)报告了 Markdown 格式问题,请注意:
+ - 在对应的 Action Run 详情页底部,通常会有一个名为 "artifact" 的压缩包。下载并解压它可以查看详细的 linting 日志和 `autocorrect` 自动修复后的文件
+ - 根据日志和修复建议,在本地修改代码,然后使用 `git commit --amend` 修改上一个提交,或创建一个新的修复提交
+
+## Pull Request (PR) 规范
+
+在创建 Pull Request 时,请确保遵循以下步骤并填写提供的 PR 模板:
+
+1. **PR 标题**:清晰概括 PR 的主要内容,例如 `Fix: Typo in Chapter 1 Introduction` 或 `Docs: Add new section on OSS licenses`
+2. **PR 内容**:我们提供了 PR 模板,请认真对照内容进行填写
+
+**PR 模板示例**:
+
+```markdown
+## 关联章节/文件
+
+- 文档路径:`docs/1-install/2-partition.md`
+
+## 修改类型
+
+- [ ] 内容补充
+- [ ] 错别字/语句修正
+- [ ] 格式调整
+- [ ] 图片/附件更新
+- [ ] 代码示例修改
+- [ ] 其他 (请说明):
+
+## 修改描述
+
+-
+-
+
+## 本地验证
+
+- [ ] 已通过 `autocorrect .` (或 `autocorrect --lint .` 检查并通过)
+- [ ] 已执行 `mkdocs serve` 并在本地预览,确认页面渲染正常、链接有效、排版美观
+
+## 附加说明 (可选)
+
+-
+```
+
+## 风格指南参考
+
+- `Linux201`项目写作规范:
+
+## 反馈与建议
+
+本贡献指南旨在帮助大家更好地参与项目,我们欢迎任何关于本指南的反馈和建议。您可以通过 Issue 或在相关的 PR 中提出您的看法。
+
+感谢您的贡献!