贡献指南
欢迎为 Sinan 项目贡献代码!请遵循以下指南以确保贡献过程顺利。
开始之前
准备工作
Fork 项目
- Fork 主项目到你的 GitHub 账户
- 克隆你的 Fork 项目到本地
bashgit clone https://github.com/你的用户名/sinan-docs.git cd sinan-docs
安装依赖
bashnpm install # 或 yarn install # 或 pnpm install
添加上游仓库
bashgit remote add upstream https://github.com/原始仓库/sinan-docs.git git fetch upstream
工作流程
同步最新代码
bashgit checkout main git pull upstream main git push origin main
创建新分支
bashgit checkout -b feature/your-feature-name
进行修改
- 编写代码
- 进行测试
- 本地验证
提交更改
bashgit add . git commit -m "feat: 添加新功能描述"
推送分支
bashgit push origin feature/your-feature-name
创建 Pull Request
- 在 GitHub 上创建 PR
- 填写 PR 模板
- 等待代码审查
分支管理
分支命名规范
遵循以下分支命名规范:
main
- 主分支,稳定版本代码develop
- 开发分支,最新开发代码feature/xxx
- 功能分支,用于新功能开发fix/xxx
- 修复分支,用于 bug 修复hotfix/xxx
- 热修复分支,用于紧急修复生产环境问题docs/xxx
- 文档分支,用于文档更新refactor/xxx
- 重构分支,用于代码重构test/xxx
- 测试分支,用于添加或修复测试release/xxx
- 发布分支,用于准备新版本发布
分支策略
Git Flow 工作流
主要分支
main
: 生产环境代码,只接受经过测试的稳定代码develop
: 开发分支,包含最新的开发进展
支持分支
Feature 分支
- 从
develop
创建 - 合并到
develop
- 命名:
feature/功能名称
- 示例:
feature/user-authentication
- 从
Fix 分支
- 从
develop
创建 - 合并到
develop
- 命名:
fix/问题描述
- 示例:
fix/login-validation-error
- 从
Hotfix 分支
- 从
main
创建 - 合并到
main
和develop
- 命名:
hotfix/紧急问题描述
- 示例:
hotfix/critical-security-patch
- 从
Release 分支
- 从
develop
创建 - 合并到
main
和develop
- 命名:
release/版本号
- 示例:
release/1.2.0
- 从
分支保护
main
分支启用保护,禁止直接推送- 所有更改必须通过 Pull Request 合并
- PR 必须通过代码审查才能合并
- PR 必须通过所有 CI/CD 检查
合并策略
Pull Request 模板
PR 标题
<类型>(<范围>): <简短描述> 示例: feat(bookmark): 添加书签导入导出功能 fix(auth): 修复用户登录验证问题 docs(readme): 更新安装说明文档
PR 描述模板
markdown## 更改类型 - [ ] 新功能 (feat) - [ ] Bug 修复 (fix) - [ ] 文档更新 (docs) - [ ] 代码重构 (refactor) - [ ] 性能优化 (perf) - [ ] 测试相关 (test) - [ ] 构建相关 (build) - [ ] CI 相关 (ci) ## 更改描述 请详细描述本次更改的内容和原因 ## 测试清单 - [ ] 单元测试通过 - [ ] 集成测试通过 - [ ] 手动测试通过 ## 相关 Issue Closes #issue编号
合并策略
Squash and merge (推荐)
- 用于功能分支合并到 develop
- 保持主分支历史简洁
Create a merge commit
- 用于 release 分支合并到 main
- 保留完整的开发历史
Rebase and merge
- 用于简单的 bug 修复
- 保持线性历史
代码审查要求
- 至少需要 1 位维护者审查批准
- 所有测试必须通过
- 所有自动化检查必须通过
- 代码覆盖率不能降低
- 无未解决的讨论
提交规范
Commit Message 格式
遵循 Angular 规范的提交消息格式:
<type>(<scope>): <subject>
<body>
<footer>
Type 类型
feat
: 新功能fix
: 修复 bugdocs
: 文档更新style
: 格式调整(不影响代码运行)refactor
: 重构(既不是新功能也不是修复 bug)perf
: 性能优化test
: 添加或修复测试build
: 构建系统或外部依赖的更改ci
: CI 配置文件和脚本的更改chore
: 其他不修改源代码或测试文件的更改revert
: 恢复先前的提交
Scope 范围
说明影响的范围,例如:
bookmark
: 书签相关auth
: 认证相关api
: API 相关ui
: 界面相关docs
: 文档相关
Subject 主题
- 简短描述,不超过 50 个字符
- 使用现在时
- 不要大写第一个字母
- 结尾不加句号
示例
bash
# 新功能
git commit -m "feat(bookmark): 添加书签导入导出功能"
# Bug 修复
git commit -m "fix(auth): 修复 token 过期后的刷新逻辑"
# 文档更新
git commit -m "docs(readme): 更新安装指南说明"
# 重构
git commit -m "refactor(api): 重构 API 路由结构"
# 性能优化
git commit -m "perf(search): 优化搜索算法提高查询速度"
提交最佳实践
- 每个提交应该是一个独立的、可编译的更改
- 避免在一个提交中包含多个不相关的更改
- 提交消息应该清楚地描述更改的内容和原因
- 在提交前运行测试确保代码质量
代码规范
通用规范
代码格式
- 使用项目配置的 ESLint/Prettier 规则
- 运行
npm run lint
检查代码 - 运行
npm run format
格式化代码
命名规范
- 变量和函数使用 camelCase
- 类名使用 PascalCase
- 常量使用 UPPER_SNAKE_CASE
- 文件名使用 kebab-case
注释规范
- 为复杂逻辑添加清晰的注释
- 使用 JSDoc 注释记录 API 和函数文档
- 避免无意义的注释
测试要求
- 所有新功能必须包含单元测试
- 修复 bug 时必须添加相应的测试用例
- 测试覆盖率应保持在 80% 以上
发布流程
版本管理
- 遵循语义化版本 (Semantic Versioning)
- 格式:
主版本号.次版本号.修订号
- 示例:
1.2.3
发布步骤
- 从 develop 创建 release 分支
- 更新版本号和 CHANGELOG
- 进行最终测试
- 合并到 main 和 develop
- 在 main 上创建 tag
- 部署到生产环境
寻求帮助
如果你在贡献过程中遇到任何问题,可以通过以下方式寻求帮助:
- 在 GitHub Issues 中提问
- 在 Pull Request 中进行讨论
- 联系项目维护者
行为准则
我们致力于提供一个友好、安全和包容的环境。请遵守以下准则:
- 尊重所有贡献者
- 建设性地提出批评和建议
- 接受不同的观点和经验
- 优雅地接受建设性批评
感谢你为 Sinan 项目做出贡献!