diff --git a/%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97-4-%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B.md b/%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97-4-%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B.md index 0566cc1..9c43923 100644 --- a/%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97-4-%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B.md +++ b/%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97-4-%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B.md @@ -1,156 +1,160 @@ -# 开发流程 - -本文介绍子模块开发的标准流程,包括分支管理、代码提交、推送和 Pull Request。 - -## 开发规范 - -> **注意**:为保证良好的开发体验,确保 IDE 正确识别项目结构,请以**子模块(子仓库)目录**作为工作空间根目录打开,而非主仓库根目录。 - -### Git 工作流 - -- **跟进最新代码**:功能分支使用 `git rebase main` 保持线性历史 -- **合并策略**:PR 合并采用 `merge` 方式,保留历史分支轨迹 -- **分支清理**:合并后删除已合并的分支 - ---- - -## 创建新分支 - -**根据你要修改的目标,选择在对应仓库创建分支:** - -- **修改子模块**(`modules/chassis` 或 `modules/gimbal`): - ```bash - cd modules/chassis # 进入子模块目录 - git checkout -b feature/your-feature-name - ``` -- **修改主仓库**(配置、文档等): - ```bash - git checkout -b feature/your-feature-name # 在主仓库根目录执行 - ``` - -## 在子模块中开发 - -**进入子模块目录:** - -```bash -cd modules/chassis # 或 cd modules/gimbal -``` - -**创建子模块分支并开发:** - -```bash -git checkout -b feature/your-feature-name -# ... 进行开发,编写代码 ... -git add . -git commit -m "前缀: 描述你的改动" [-m "第一行" -m "第二行"] -# 多行内容推荐直接使用: -git commit -``` - -**推荐 commit message 格式:** - -``` -<类型>: <简短描述> - -[可选的详细说明] -``` - -**常用类型:** - -| 类型 | 含义 | -|------|------| -| `feat` | 新功能 | -| `fix` | 修复 bug | -| `docs` | 文档改动 | -| `style` | 代码格式(不影响功能) | -| `refactor` | 重构(不是修复也不是新功能) | -| `perf` | 性能优化 | -| `test` | 添加/修改测试 | -| `chore` | 构建/工具变动 | - -**示例:** - -``` -feat: 添加云台视觉识别模块 - -- 集成 YOLOv8 模型推理 -- 实现目标框坐标解算 -``` - -> 子模块和主仓库的 commit 均遵循此格式。 - -## 保持子模块代码最新 - -开发子模块时,**每次开始工作前**建议使用 rebase 拉取最新代码: - -```bash -cd modules/chassis # 或 modules/gimbal -git checkout main -git pull origin main -git checkout feature/your-feature-name -git rebase main # 保持线性历史 -``` - -或在主仓库一次性更新所有子模块到各自主分支的最新提交: - -```bash -git submodule update --remote --recursive -``` - -> **注意**:`--remote` 默认更新到各子模块的 `main` 分支。如果子模块有其他开发分支(如 `dev`),需要先在子模块内切换到对应分支,再单独 `git pull`。 - -## 提交主仓库(仅在需要时) - -> **重要提示**: -> -> 主仓库中记录的是**子模块当前指向的提交指针**。请**不要频繁提交**这类更新——每次子模块有新提交就提 PR 会造成大量噪音。 -> -> **只在以下情况才提交主仓库的子模块指针更新:** -> - 子模块有重大版本更新 -> - 需要同步所有成员的子模块状态 -> - release 准备阶段 - -**提交主仓库:** - -```bash -cd auto-aim-mobile-bot -git add modules/chassis modules/gimbal -git commit -m "chore: 更新子模块到最新版本" -``` - -## 推送分支 - -**推送子模块(如在子模块中开发):** - -> 推送前请先确保你当前处于**子模块目录内**: - -```bash -cd modules/chassis # 或 modules/gimbal -git push -u origin feature/your-feature-name -``` - -> 注意:子模块的远程是独立的,push 操作不影响主仓库。推送后去对应的**子模块仓库**页面创建 PR。 - -**推送主仓库分支:** - -> 在主仓库**根目录**执行: - -```bash -git push -u origin feature/your-feature-name -``` - -## 提 Pull Request - -1. 在 Gitea 上打开对应的仓库页面 -2. 点击 **创建 Pull Request**(或 Compare & pull request) -3. 选择: - - **base branch**:合并目标分支(如 `main`) - - **compare branch**:你的开发分支(如 `feature/your-feature-name`) -4. 填写 PR 标题和描述,说明改动内容和目的 -5. 指定 **Project(项目)** -6. 点击 **创建 Pull Request** - -## Review 通过后合并 - -- PR 通过 Review 后,点击 **Merge** -- 合并后**删除已合并的分支**(保持仓库整洁) +# 开发流程 + +本文介绍子模块开发的标准流程,包括分支管理、代码提交、推送和 Pull Request。 + +## 开发规范 + +> **注意**:为保证良好的开发体验,确保 IDE 正确识别项目结构,请以**子模块(子仓库)目录**作为工作空间根目录打开,而非主仓库根目录。 + +### Git 工作流 + +- **跟进最新代码**:功能分支使用 `git rebase main` 保持线性历史 +- **合并策略**:PR 合并采用 `merge` 方式,保留历史分支轨迹 +- **分支清理**:合并后删除已合并的分支 + +--- + +## 创建新分支 + +**根据你要修改的目标,选择在对应仓库创建分支:** + +- **修改子模块**(`modules/chassis` 或 `modules/gimbal`): + ```bash + cd modules/chassis # 进入子模块目录 + git checkout -b feature/your-feature-name + ``` +- **修改主仓库**(配置、文档等): + ```bash + git checkout -b feature/your-feature-name # 在主仓库根目录执行 + ``` + +## 在子模块中开发 + +**进入子模块目录:** + +```bash +cd modules/chassis # 或 cd modules/gimbal +``` + +**创建子模块分支并开发:** + +```bash +git checkout -b feature/your-feature-name +# ... 进行开发,编写代码 ... +git add . +git commit -m "前缀: 描述你的改动" [-m "第一行" -m "第二行"] +# 多行内容推荐直接使用: +git commit +``` + +**推荐 commit message 格式:** + +``` +<类型>: <简短描述> + +[可选的详细说明] +``` + +**常用类型:** + +| 类型 | 含义 | +|------|------| +| `feat` | 新功能 | +| `fix` | 修复 bug | +| `docs` | 文档改动 | +| `style` | 代码格式(不影响功能) | +| `refactor` | 重构(不是修复也不是新功能) | +| `perf` | 性能优化 | +| `test` | 添加/修改测试 | +| `chore` | 构建/工具变动 | + +**示例:** + +``` +feat: 添加云台视觉识别模块 + +- 集成 YOLOv8 模型推理 +- 实现目标框坐标解算 +``` + +> 子模块和主仓库的 commit 均遵循此格式。 + +## 保持子模块代码最新 + +开发子模块时,**每次开始工作前**建议使用 rebase 拉取最新代码: + +```bash +cd modules/chassis # 或 modules/gimbal +git checkout main +git pull origin main +git checkout feature/your-feature-name +git rebase main # 保持线性历史 +``` + +或在主仓库一次性更新所有子模块到各自主分支的最新提交: + +```bash +git submodule update --remote --recursive +``` + +> **注意**:`--remote` 默认更新到各子模块的 `main` 分支。如果子模块有其他开发分支(如 `dev`),需要先在子模块内切换到对应分支,再单独 `git pull`。 + +## 提交主仓库(仅在需要时) + +> **重要提示**: +> +> 主仓库中记录的是**子模块当前指向的提交指针**。请**不要频繁提交**这类更新——每次子模块有新提交就提 PR 会造成大量噪音。 +> +> **只在以下情况才提交主仓库的子模块指针更新:** +> - 子模块有重大版本更新 +> - 需要同步所有成员的子模块状态 +> - release 准备阶段 + +**提交主仓库:** + +```bash +cd auto-aim-mobile-bot +git add modules/chassis modules/gimbal +git commit -m "chore: 更新子模块到最新版本" +``` + +## 推送分支 + +**推送子模块(如在子模块中开发):** + +> 推送前请先确保你当前处于**子模块目录内**: + +```bash +cd modules/chassis # 或 modules/gimbal +git push -u origin feature/your-feature-name +``` + +> 注意:子模块的远程是独立的,push 操作不影响主仓库。推送后去对应的**子模块仓库**页面创建 PR。 + +**推送主仓库分支:** + +> 在主仓库**根目录**执行: + +```bash +git push -u origin feature/your-feature-name +``` + +## 提 Pull Request + +1. 在 Gitea 上打开对应的仓库页面 +2. 点击 **创建 Pull Request**(或 Compare & pull request) +3. 选择: + - **base branch**:合并目标分支(如 `main`) + - **compare branch**:你的开发分支(如 `feature/your-feature-name`) +4. 填写 PR 标题和描述,说明改动内容和目的 +5. 指定 **Project(项目)** +6. 点击 **创建 Pull Request** + +## Review 通过后合并 + +- PR 通过 Review 后,点击 **Merge** +- 合并后**删除已合并的分支**(保持仓库整洁) + +# 下一页 + +[开发指南-5-子模块更新](./%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97-5-%E5%AD%90%E6%A8%A1%E5%9D%97%E6%9B%B4%E6%96%B0) \ No newline at end of file