Skip to content

贡献指南

一句话总结:如何为项目贡献代码和文档。

📍 本章定位

  • 服务方案:全部方案
  • 学习方式:📖 选学
  • 在流程中的作用:为项目贡献代码和文档
  • 核心知识点:贡献流程、代码规范、文档规范
  • 预计时长:按需查阅
  • 完成后能做什么:能够为项目贡献代码和文档

一、贡献总览

1.1 贡献类型

1.2 贡献流程


二、代码贡献

2.1 Fork 项目

问题:如何为项目贡献代码?

解决方案:Fork 项目到自己的账号。

操作步骤

  1. 访问项目页面

    https://github.com/your-username/your-project
  2. 点击 Fork 按钮

    • 点击右上角的 Fork 按钮
    • 选择自己的账号
    • 等待 Fork 完成
  3. 克隆到本地

    bash
    git clone https://github.com/your-username/your-project.git
    cd your-project

预期结果

  • 项目 Fork 到自己的账号
  • 可以在本地修改代码

2.2 创建分支

问题:如何管理代码版本?

解决方案:使用分支管理。

操作步骤

  1. 创建新分支

    bash
    git checkout -b feature/my-feature
  2. 切换分支

    bash
    git checkout feature/my-feature
  3. 查看分支

    bash
    git branch

分支命名规范

类型命名示例
功能分支feature/xxxfeature/user-login
修复分支fix/xxxfix/login-bug
文档分支docs/xxxdocs/api-docs
测试分支test/xxxtest/user-login

2.3 编写代码

问题:如何编写高质量的代码?

解决方案:遵循代码规范。

代码规范

规范说明工具
命名规范变量、函数、类命名PEP 8
代码格式缩进、空格、换行Black
类型注解添加类型注解MyPy
文档字符串添加文档字符串Sphinx

代码示例

python
# 好的代码
def calculate_price(quantity: int, price: float) -> float:
    """
    Calculate the total price.
    
    Args:
        quantity: The quantity of items.
        price: The price per item.
    
    Returns:
        The total price.
    """
    return quantity * price

# 不好的代码
def calc(q, p):
    return q * p

2.4 运行测试

问题:如何确保代码质量?

解决方案:运行测试。

操作步骤

  1. 运行单元测试

    bash
    pytest
  2. 运行集成测试

    bash
    pytest --integration
  3. 运行端到端测试

    bash
    pytest --e2e
  4. 运行覆盖率测试

    bash
    pytest --cov

测试规范

规范说明工具
测试命名使用描述性名称pytest
测试独立测试之间相互独立pytest
测试可重复测试结果一致pytest
测试快速测试执行快速pytest

2.5 提交 PR

问题:如何提交代码变更?

解决方案:提交 Pull Request。

操作步骤

  1. 提交代码

    bash
    git add .
    git commit -m "feat: add user login feature"
  2. 推送到远程

    bash
    git push origin feature/my-feature
  3. 创建 PR

    • 访问 GitHub 项目页面
    • 点击 "New Pull Request"
    • 填写 PR 描述
    • 提交 PR

PR 描述模板

markdown
## 描述

简要描述本次变更的内容。

## 变更类型

- [ ] 新功能
- [ ] Bug 修复
- [ ] 性能优化
- [ ] 文档更新
- [ ] 其他

## 测试

描述如何测试本次变更。

## 截图

如果适用,添加截图。

## 相关 Issue

关闭 #123

三、文档贡献

3.1 文档编写

问题:如何编写高质量的文档?

解决方案:遵循文档规范。

文档规范

规范说明工具
格式规范使用 MarkdownMarkdown
结构规范使用标题、列表、表格Markdown
图片规范使用高清图片图片编辑工具
链接规范使用相对链接Markdown

文档示例

markdown
# 标题

> 一句话总结

## 二级标题

### 三级标题

- 列表项 1
- 列表项 2

| 列1 | 列2 |
|-----|-----|
| 值1 | 值2 |

![图片描述](图片链接)

3.2 文档翻译

问题:如何翻译文档?

解决方案:使用翻译工具。

翻译规范

规范说明工具
术语规范使用统一术语术语表
格式规范保持格式一致Markdown
链接规范更新链接Markdown

翻译示例

markdown
# 英文原文

This is a sample document.

# 中文翻译

这是一个示例文档。

3.3 文档校对

问题:如何校对文档?

解决方案:使用校对工具。

校对规范

规范说明工具
语法检查检查语法错误Grammarly
拼写检查检查拼写错误拼写检查工具
格式检查检查格式错误Markdown

校对示例

markdown
# 错误示例

This is a sample document with erors.

# 正确示例

This is a sample document with errors.

四、测试贡献

4.1 单元测试

问题:如何编写单元测试?

解决方案:使用测试框架。

测试示例

python
# test_calculator.py
import pytest
from calculator import add, subtract, multiply, divide

def test_add():
    assert add(2, 3) == 5
    assert add(-1, 1) == 0
    assert add(0, 0) == 0

def test_subtract():
    assert subtract(5, 3) == 2
    assert subtract(1, 1) == 0
    assert subtract(0, 0) == 0

测试规范

规范说明工具
测试命名使用描述性名称pytest
测试独立测试之间相互独立pytest
测试可重复测试结果一致pytest
测试快速测试执行快速pytest

4.2 集成测试

问题:如何编写集成测试?

解决方案:使用测试框架。

测试示例

python
# test_api.py
import requests

def test_get_users():
    response = requests.get('http://localhost:8000/users')
    assert response.status_code == 200
    assert len(response.json()) > 0

def test_create_user():
    data = {'name': 'John', 'email': 'john@example.com'}
    response = requests.post('http://localhost:8000/users', json=data)
    assert response.status_code == 201
    assert response.json()['name'] == 'John'

测试规范

规范说明工具
测试所有端点测试所有 API 端点pytest
测试正常情况测试正常请求pytest
测试异常情况测试异常请求pytest
测试边界条件测试边界值pytest

4.3 端到端测试

问题:如何编写端到端测试?

解决方案:使用测试框架。

测试示例

javascript
// test_e2e.js
const { test, expect } = require('@playwright/test');

test('user can login', async ({ page }) => {
  await page.goto('http://localhost:3000/login');
  await page.fill('#email', 'john@example.com');
  await page.fill('#password', 'password123');
  await page.click('#login-button');
  await expect(page).toHaveURL('http://localhost:3000/dashboard');
});

测试规范

规范说明工具
测试关键流程测试关键用户流程Playwright
测试正常情况测试正常操作Playwright
测试异常情况测试异常操作Playwright
测试不同浏览器测试不同浏览器Playwight

五、其他贡献

5.1 问题反馈

问题:如何反馈问题?

解决方案:使用 Issue。

反馈规范

规范说明工具
标题规范使用描述性标题GitHub Issue
描述规范详细描述问题GitHub Issue
复现步骤提供复现步骤GitHub Issue
截图提供截图GitHub Issue

反馈模板

markdown
## 问题描述

简要描述问题。

## 复现步骤

1. 步骤 1
2. 预期结果
3. 实际结果

## 环境信息

- 操作系统:
- 浏览器:
- 版本:

## 截图

如果适用,添加截图。

5.2 功能建议

问题:如何提出功能建议?

解决方案:使用 Issue。

建议规范

规范说明工具
标题规范使用描述性标题GitHub Issue
描述规范详细描述功能GitHub Issue
使用场景描述使用场景GitHub Issue
实现方案提供实现方案GitHub Issue

建议模板

markdown
## 功能描述

简要描述功能。

## 使用场景

描述使用场景。

## 实现方案

提供实现方案。

## 其他信息

其他相关信息。

5.3 代码审查

问题:如何进行代码审查?

解决方案:使用 Pull Request。

审查规范

规范说明工具
代码质量检查代码质量GitHub PR
测试覆盖检查测试覆盖GitHub PR
文档更新检查文档更新GitHub PR
性能影响检查性能影响GitHub PR

审查清单

  • [ ] 代码质量检查
  • [ ] 测试覆盖检查
  • [ ] 文档更新检查
  • [ ] 性能影响检查
  • [ ] 安全影响检查

六、最佳实践

6.1 贡献礼仪

问题:如何进行良好的贡献?

解决方案:遵循贡献礼仪。

礼仪规范

规范说明工具
尊重他人尊重其他贡献者GitHub
清晰沟通清晰表达意图GitHub
及时响应及时响应反馈GitHub
感谢他人感谢其他贡献者GitHub

6.2 贡献工具

问题:如何使用贡献工具?

解决方案:使用贡献工具。

工具清单

工具用途命令
Git版本控制git
GitHub代码托管gh
pytest测试框架pytest
Black代码格式化black

6.3 贡献流程

问题:如何遵循贡献流程?

解决方案:遵循贡献流程。

流程清单


七、核心洞察

核心洞察

贡献是开源项目的生命线

  • 代码贡献:新功能、Bug 修复、性能优化
  • 文档贡献:文档编写、文档翻译、文档校对
  • 测试贡献:单元测试、集成测试、端到端测试
  • 其他贡献:问题反馈、功能建议、代码审查

记住:贡献不仅是代码,还包括文档、测试、反馈等。


八、参考与延伸

[1] GitHub 贡献指南(2026)— GitHub 贡献指南

[2] 开源贡献指南(2026)— 开源贡献指南

[3] Git 贡献指南(2026)— Git 贡献指南


九、下一步

完成本章后,进入:

OPC 超级个体实战指南