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