ShopTRAINING/新需求开发流程.md

158 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 新需求开发标准流程
本文档旨在提供一个标准、安全、高效的新功能开发工作流,涵盖从创建功能分支到最终合并回主开发分支的完整步骤,并融入日常开发的最佳实践。
## 核心开发理念
- **主分支保护**: `lyf-dev` 是团队的主开发分支,应始终保持稳定和可部署状态。所有新功能开发都必须在独立的功能分支中进行。
- **功能分支**: 每个新需求(如 `req0001`)都对应一个功能分支(如 `lyf-dev-req0001`)。分支命名应清晰、有意义。
- **小步快跑**: 频繁提交Commit、频繁推送Push、频繁与主线同步`rebase``merge`)。这能有效减少后期合并的难度和风险。
- **清晰的历史**: 保持 Git 提交历史的可读性方便代码审查Code Review和问题追溯。
---
## 每日工作第一步:同步最新代码
**无论你昨天工作到哪里,每天开始新一天的工作时,请务必执行以下步骤。这是保证团队高效协作、避免合并冲突的基石。**
1. **更新主开发分支 `lyf-dev`**
```bash
# 切换到主开发分支
git checkout lyf-dev
# 从远程拉取最新代码,--prune 会清理远程已删除的分支引用
git pull origin lyf-dev --prune
```
2. **同步你的功能分支 (团队选择一种方案)**
将主分支的最新代码同步到你的功能分支,有两种主流方案,请团队根据偏好选择其一。
---
### 方案一 (推荐): 使用 `rebase` 保持历史清爽
此方案会让你的分支提交历史保持为一条直线,非常清晰。
```bash
# 切换回你正在开发的功能分支(例如 lyf-dev-req0001
git checkout lyf-dev-req0001
# 使用 rebase 将 lyf-dev 的最新更新同步到你的分支
git rebase lyf-dev
```
- **优点**: 最终的提交历史非常干净、线性,便于代码审查和问题追溯。
- **缺点**: 重写了提交历史,需要使用 `git push --force-with-lease` 强制推送。
- **冲突解决**:
1. 手动修改冲突文件。
2. 执行 `git add <冲突文件>`。
3. 执行 `git rebase --continue`。
4. 若想中止,执行 `git rebase --abort`。
---
### 方案二: 使用 `merge` 保留完整历史
此方案会忠实记录每一次合并操作,不修改历史提交。
```bash
# 切换回你正在开发的功能分支(例如 lyf-dev-req0001
git checkout lyf-dev-req0001
# 将最新的 lyf-dev 合并到你当前的分支
git merge lyf-dev
```
- **优点**: 操作安全,不修改历史,推送时无需强制。
- **缺点**: 会在功能分支中产生额外的合并提交记录 (e.g., "Merge branch 'lyf-dev' into ..."),使历史记录变得复杂。
- **冲突解决**:
1. 手动修改冲突文件。
2. 执行 `git add <冲突文件>`。
3. 执行 `git commit` 完成合并。
---
## 完整开发流程
### 1. 开始新需求:创建功能分支
**当你需要开启一个全新的功能开发时:**
1. **确保 `lyf-dev` 已是最新**
(此步骤已在“每日工作第一步”中完成,此处作为提醒)
2. **从 `lyf-dev` 创建并切换到新分支**
假设新需求编号是 `req0002`
```bash
# 这会从最新的 lyf-dev 创建 lyf-dev-req0002 分支并切换过去
git checkout -b lyf-dev-req0002
```
### 2. 日常开发:提交与推送
**在你的功能分支上(如 `lyf-dev-req0002`)进行开发:**
1. **编码与本地提交**
完成一个小的、完整的功能点后,就进行一次提交。
```bash
# 查看修改状态
git status
# 添加所有相关文件到暂存区
git add .
# 提交并撰写清晰的说明feat: 功能, fix: 修复, docs: 文档等)
git commit -m "feat: 实现用户认证模块"
```
2. **推送改动到远程备份**
为了代码安全和方便团队协作,应频繁将本地提交推送到远程。
```bash
# -u 参数会设置本地分支跟踪远程分支,后续只需 git push 即可
git push -u origin lyf-dev-req0002
```
### 3. 功能完成:合并回主线
**当功能开发完成并通过测试后,将其合并回 `lyf-dev`**
1. **最后一次同步**
在正式合并前,做最后一次同步,确保分支包含了 `lyf-dev` 的所有最新内容。
(重复“每日工作第一步”中的同步流程)
2. **切换到主分支并拉取最新代码**
```bash
git checkout lyf-dev
git pull origin lyf-dev
```
3. **合并功能分支**
我们使用 `--no-ff` (No Fast-forward) 参数来创建合并提交,这样可以清晰地记录“合并了一个功能”这个行为。
```bash
# --no-ff 会创建一个新的合并提交,保留分支历史
git merge --no-ff lyf-dev-req0002
```
如果同步工作做得好,这一步通常不会有冲突。
> **【重要提示】关于合并提交信息**
>
> 执行此命令后,可能会出现两种情况:
> 1. **自动完成 (最常见)**: 如果没有冲突Git 会自动使用默认信息(如 `Merge branch 'lyf-dev-req0002'`)创建合并提交,流程直接完成,无需任何操作。
> 2. **弹出Vim编辑器**: Git 可能会打开一个名为 Vim 的文本编辑器,让你确认或修改提交信息。这是正常现象,请按以下步骤操作:
> - **保存并退出 (完成合并)**: 按 `Esc` 键,然后输入 `:wq`,再按 `Enter`。
> - **中止并退出 (取消合并)**: 按 `Esc` 键,然后输入 `:q!`,再按 `Enter`。
4. **推送合并后的主分支**
```bash
git push origin lyf-dev
```
### 4. 清理工作
**合并完成后,功能分支的历史使命就完成了:**
1. **删除远程分支**
```bash
git push origin --delete lyf-dev-req0002
```
2. **删除本地分支**
```bash
git branch -d lyf-dev-req0002
```
遵循以上流程,可以确保团队的开发工作流清晰、安全且高效。