更新 开发指南 4 开发流程
@@ -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)
|
||||
Reference in New Issue
Block a user