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