贡献指南

如何提交 Pull Request

代码贡献的完整流程指南

环境准备 · 工作流程 · 规范要求


🎯 概述

我们使用 基于 develop 分支的工作流。所有更改都应在从 develop 创建的分支上进行,然后提交 Pull Request 合并回 develop

分支结构

分支用途PR 目标
main稳定发布版本❌ 不要直接 PR
develop活跃开发✅ PR 目标分支
feature/*新功能develop
fix/*Bug 修复develop
docs/*文档更新develop

🔧 环境准备

1. Fork 仓库

  1. 访问 NextJS Base
  2. 点击右上角的 Fork 按钮
  3. 选择你的 GitHub 账号

2. 克隆你的 Fork

# 克隆你的 fork
git clone https://github.com/你的用户名/nextjs-base.git
cd nextjs-base

# 添加上游仓库
git remote add upstream https://github.com/huglemon/nextjs-base.git

# 验证远程仓库
git remote -v
# origin    https://github.com/你的用户名/nextjs-base.git (fetch)
# origin    https://github.com/你的用户名/nextjs-base.git (push)
# upstream  https://github.com/huglemon/nextjs-base.git (fetch)
# upstream  https://github.com/huglemon/nextjs-base.git (push)

3. 安装依赖

bun install
cp .env.example .env.local
# 编辑 .env.local 配置数据库
bun run init

📝 工作流程

第一步:同步上游代码

始终从最新的 develop 分支开始:

# 获取最新代码
git fetch upstream

# 切换到 develop
git checkout develop

# 同步上游代码
git merge upstream/develop

# 推送到你的 fork(可选)
git push origin develop

第二步:创建功能分支

# 创建并切换到新分支
git checkout -b feature/你的功能名称

# Bug 修复
git checkout -b fix/问题描述

# 文档更新
git checkout -b docs/文档主题

分支命名规范:

前缀用途示例
feature/新功能feature/add-dark-mode
fix/Bug 修复fix/login-redirect-issue
docs/文档更新docs/update-readme
refactor/代码重构refactor/simplify-auth
test/测试相关test/add-user-tests

第三步:进行更改

  1. 编写代码
  2. 遵循现有的代码风格和规范
  3. 如有必要,添加测试
  4. 如有必要,更新文档
# 查看更改
git status

# 暂存更改
git add .

# 提交(使用描述性的提交信息)
git commit -m "feat: 在导航栏添加深色模式切换"

提交信息规范:

前缀说明
feat:新功能
fix:Bug 修复
docs:文档更新
style:格式调整,不涉及代码逻辑
refactor:代码重构
test:添加测试
chore:构建/工具相关

第四步:推送到你的 Fork

git push origin feature/你的功能名称

第五步:创建 Pull Request

  1. 在 GitHub 上打开你的 fork
  2. 点击 Compare & pull request
  3. 确保 base 是 huglemon/nextjs-base:develop
  4. 填写 PR 模板:
## 描述
简要描述你的更改。

## 更改类型
- [ ] Bug 修复
- [ ] 新功能
- [ ] 文档更新
- [ ] 代码重构

## 测试
描述你如何测试了这些更改。

## 检查清单
- [ ] 代码遵循项目的风格规范
- [ ] 已在本地测试过更改
- [ ] 已更新相关文档(如需要)
- [ ] 更改不会破坏现有功能
  1. 点击 Create pull request

📋 规范要求

代码风格

  • 遵循代码库中现有的模式
  • 使用有意义的变量和函数名
  • 为复杂逻辑添加注释
  • 保持函数小巧且专注

测试

# 运行 lint 检查
bun run lint

# 运行类型检查(如适用)
bun run typecheck

# 本地测试你的更改
bun run dev

文档

  • 为新功能更新相关文档
  • 为新函数添加 JSDoc 注释
  • 在文档中包含示例

🔄 保持分支更新

如果在你开发期间 develop 有了新的提交:

# 获取最新代码
git fetch upstream

# 将你的分支 rebase 到 develop
git rebase upstream/develop

# 如需要,强制推送(仅限你自己的分支!)
git push origin feature/你的功能名称 --force-with-lease

✅ PR 检查清单

提交前确认:

  • 分支从 develop 创建
  • 代码遵循项目规范
  • 已在本地测试
  • 已更新文档(如需要)
  • 提交信息清晰
  • PR 描述完整
  • 没有合并冲突

🔍 提交后

  1. 等待审核 - 维护者会审核你的 PR
  2. 处理反馈 - 如有需要,进行修改
  3. PR 合并 - 庆祝!🎉

如果需要修改

# 进行请求的修改
git add .
git commit -m "fix: 根据审核反馈进行修改"
git push origin feature/你的功能名称

PR 会自动更新。


📚 相关文档