分支管理
主分支
main(或master):主分支,始终保持稳定,只有通过 PR(Pull Request)合并经过测试的代码,才可以更新该分支。develop(可选):开发分支,所有功能分支合并到此,经过测试后再合并到main。
辅助分支
feature/xxx:功能分支,每个新功能一个独立的分支,从develop或main创建,完成后合并回develop。fix/xxx:Bug 修复分支,针对已发布版本的问题修复,通常从main创建,修复后合并回main和develop。hotfix/xxx:紧急修复分支,针对生产环境的重大问题,从main分支创建,修复后合并回main和develop。release/xxx(可选):用于版本发布准备,通常从develop创建,经过 QA 测试后合并到main。
Git 提交规范
Git 工作流程规范
1. Feature 分支管理规范 (feature/*) 🚀
feature/* 分支用于 新功能开发,确保功能开发独立进行,不影响主开发分支 (develop),并支持多人协作。
-
何时使用
feature/*分支?✅ 开发新功能(例如:用户管理、支付系统、文章搜索等)。
✅ 需要多人协作,每个人负责不同部分。
✅ 功能未完成,不影响
develop,可以独立测试。✅ 功能可能跨多个版本,可以随时暂停/继续开发。
-
Feature 分支的完整流程
# 切换到 develop(或 main)并拉取最新代码 git checkout develop git pull origin develop git checkout -b feature/user-auth # 代码开发 & 提交 git add . git commit -m "feat(auth): 添加用户注册功能" git push origin feature/user-auth # 提交 PR,合并到 develop git checkout develop git merge --no-ff feature/user-auth # 删除 feature/* 分支 git branch -d feature/user-auth git push origin --delete feature/user-auth -
总结 ✅
feature/*用于 新功能开发,合并到develop。 ✅ 必须经过 Code Review + CI 测试,确保新功能稳定。 ✅ 合并后删除feature分支,保持仓库整洁。 ✅ 独立开发,避免影响主分支,支持多人协作。
2. Release 分支管理规范
release/* 分支主要用于 版本发布,在 develop 分支的功能开发稳定后,创建 release 分支进行 测试、修复 Bug、优化文档,确保版本质量。测试通过后,合并到 main 进行最终发布,并打 Tag 记录版本。
-
Release 分支的作用
- 版本准备:在
develop上开发完成后,创建release分支进行 QA 测试和 Bug 修复。 - 保持开发独立:允许
develop继续进行新功能开发,而release仅专注于稳定当前版本。 - 避免代码冻结:开发团队可以并行开发,而不影响版本发布流程。
- 版本打 Tag:确保
main上的每个正式版本都有明确的 Tag 记录,方便回溯。
- 版本准备:在
-
Release 分支的完整流程
# 确保 develop 代码最新 git checkout develop git pull origin develop # 创建 release 分支 git checkout -b release/v1.0.0 # release/v1.0.0 表示这是 v1.0.0 版本的发布分支。 # 进入测试阶段 # 在 release 分支进行测试,如果发现问题: # 修复 Bug git add . git commit -m "fix: resolve issue with login form" git push origin release/v1.0.0 # 合并到 main git checkout main git merge --no-ff release/v1.0.0 # 打 Tag git tag -a v1.0.0 -m "Release version 1.0.0" git push origin v1.0.0 # 合并回 develop git checkout develop git merge --no-ff release/v1.0.0 # 删除 release 分支 git branch -d release/v1.0.0 git push origin --delete release/v1.0.0 -
总结 ✅
release分支确保代码质量,在main发布前进行充分测试。 ✅release期间不加新功能,只修 Bug,保证版本稳定。 ✅ 发布后,合并release到main和develop,并删除release分支。 ✅ 每个发布版本都有 清晰的 Tag 记录,方便回滚和维护。
3. Fix 分支管理规范 (fix/*)
fix/* 分支用于修复 开发过程中发现的 Bug,这些 Bug 可能影响 develop 分支的开发,但不属于紧急线上修复(紧急修复使用 hotfix/*)。 1. 何时使用 fix/* 分支?
✅ 在开发过程中,发现 非紧急 的 Bug,需要修复并合并到 develop。
✅ 可能是团队测试、代码 Review 过程中发现的问题。
✅ 不直接修复 main 上的 Bug,而是修复 develop,等下个版本发布。
✅ 适用于 回归测试 Bug 修复、优化 UI 细节、修正逻辑错误 等。
-
Fix 分支的完整流程
# 从 develop 创建 fix/* 分支 git checkout develop git pull origin develop git checkout -b fix/login-bug # 进行修复 git add . git commit -m "fix(auth): 修复登录状态异常问题" git push origin fix/login-bug # 提交 PR,合并到 develop git checkout develop git merge --no-ff fix/login-bug # 删除 fix/* 分支 git branch -d fix/login-bug git push origin --delete fix/login-bug -
适用场景
✅代码 Review 发现 Bug
✅测试阶段发现 UI/逻辑错误
✅某个 feature 分支合并后导致的小问题
-
总结 ✅
fix/*用于修复 开发阶段 发现的 Bug,合并到develop。 ✅fix/*需 Code Review + CI 测试,保证修复有效。 ✅fix/*不影响线上,不像hotfix/*需要紧急修复。 ✅ 修复完成后 删除 fix 分支,保持仓库整洁。
4. Hotfix 分支管理规范 (hotfix/*) 🚑
hotfix/* 分支用于 紧急修复线上 Bug,通常是 生产环境(main 分支)已发布版本 发现 严重问题,需要立即修复并发布补丁版本。 1. 何时使用 hotfix/* 分支?
✅ 线上(production)环境发现严重 Bug,必须紧急修复。
✅ 影响用户正常使用(如支付失败、数据丢失、服务崩溃)。
✅ 必须立即修复,不能等下个正式版本发布。
✅ 修复后,需合并到 main 并打 Tag 作为补丁版本,同时同步 develop。
-
Hotfix 分支的完整流程
# 确保 main 最新 git checkout main git pull origin main # 创建 hotfix 分支 git checkout -b hotfix/fix-login-v1.0.1 # hotfix/fix-login-v1.0.1 说明: # 这是 紧急修复(hotfix) # 修复的是登录相关问题(fix-login) # 补丁版本号 v1.0.1(当前线上是 v1.0.0) # 修复 & 提交 git add . git commit -m "fix(auth): 修复线上登录崩溃问题" git push origin hotfix/fix-login-v1.0.1 # 提交 PR,合并到 main # 在 GitHub/GitLab 提交 PR,请求合并到 main。 # 必须经过 Code Review,确保修复安全。 # 测试通过后,合并到 main: git checkout main git merge --no-ff hotfix/fix-login-v1.0.1 git push origin main # 打补丁 Tag git tag -a v1.0.1 -m "Hotfix: 修复登录崩溃问题" git push origin v1.0.1 # 合并到 develop git checkout develop git merge --no-ff hotfix/fix-login-v1.0.1 git push origin develop # 删除 hotfix 分支 git branch -d hotfix/fix-login-v1.0.1 git push origin --delete hotfix/fix-login-v1.0.1 -
适用场景
✅线上用户反馈 Bug,影响正常使用
✅支付、登录、数据丢失等重大问题
✅需要尽快修复并发布补丁版本
-
总结 ✅
hotfix/*仅用于 紧急修复线上 Bug,不能等下个版本。 ✅ 必须打 Tag,作为补丁版本(如v1.0.1)。 ✅ 修复后同步develop,避免以后版本再次出现问题。 ✅ 删除hotfix分支,保持仓库整洁。
5. Develop 分支管理规范 (develop) 🚀
develop 分支是 主要的开发分支,所有新功能 (feature/*) 和 Bug 修复 (fix/*) 都先合并到 develop,然后再从 develop 创建 Release 版本(release/*)进行预发布。 1. develop 分支的作用
✅ 所有新功能(feature/*)和 Bug 修复(fix/*)的集成分支。
✅ 定期创建 release/* 分支,进行预发布测试。
✅ hotfix/* 修复完成后,也需要同步到 develop,防止 Bug 反复出现。
✅ 不直接在 develop 上开发新功能,必须新建 feature/* 或 fix/*。
-
develop分支的合并流程# 开发阶段 # 1. 确保 develop 分支最新 git checkout develop git pull origin develop # 2. 创建 feature/* 进行功能开发 git checkout -b feature/user-auth # 3. 完成开发后,合并 feature/* 到 develop git checkout develop git merge --no-ff feature/user-auth git push origin develop # 进入 release/* 预发布阶段 # 1. develop 代码稳定后,创建 release/* git checkout develop git pull origin develop git checkout -b release/v1.0.0 git push origin release/v1.0.0 # 2. release/* 分支进行测试 & 修复 Bug # + 发现 Bug,直接在 release/* 上修复: git add . git commit -m "fix: 修复登录 Bug" git push origin release/v1.0.0 # + 如果是重大 Bug,可以让 fix/* 分支修复,然后合并进 release/*: git checkout -b fix/login-bug # 修复 Bug git add . git commit -m "fix: 登录崩溃修复" git push origin fix/login-bug git checkout release/v1.0.0 git merge --no-ff fix/login-bug git push origin release/v1.0.0 # 发布正式版本 # release/* 通过测试后,合并到 main 并打 Tag git checkout main git pull origin main git merge --no-ff release/v1.0.0 git tag -a v1.0.0 -m "Release v1.0.0" git push origin v1.0.0 git push origin main # 反向合并 release/* 到 develop # ⚠️ 重要:避免 develop 落后于 main! git checkout develop git merge --no-ff release/v1.0.0 git push origin develop # 删除 release 分支 git branch -d release/v1.0.0 git push origin --delete release/v1.0.0 -
适用场景
✅ 所有新功能 (
feature/*) 和 Bug 修复 (fix/*) 必须先合并到develop。✅ 开发完成后,从
develop创建release/*进行预发布。✅ 线上紧急修复 (
hotfix/*) 完成后,也要同步合并到develop。 -
总结
✅
develop是 开发主干,所有新功能 (feature/*) 和 Bug 修复 (fix/*) 都合并到这里。✅ 不能直接在
develop开发,必须新建feature/*或fix/*。✅
develop定期创建release/*进行预发布,确保代码稳定性。✅ 线上 Bug (
hotfix/*) 修复后,也要同步回develop,防止 Bug 复现。
代码合并 & PR 规范
- 必须通过 PR 合并分支,避免直接推送到
main或develop。 - 至少一名成员 Code Review 通过后再合并。
- PR 说明清晰,包含背景、变更内容、影响范围。
- 删除已合并的功能分支,保持仓库整洁:
git branch -d feature/new-feature
git push origin --delete feature/new-feature
其他建议
-
使用
.gitignore,避免提交不必要的文件。 -
定期 Rebase 或 Merge,减少冲突:
git fetch origin git rebase origin/develop -
Commit 颗粒度适中,避免提交过大或过小的变更。
-
保持 commit 记录清晰,避免
fix typo、update这类无意义的提交信息。
总结
- 分支管理:使用
main/develop/feature/*/fix/*/hotfix/*规范化管理。 - 代码提交:采用
feat,fix,docs等格式,清晰描述变更。 - 合并流程:所有改动必须通过 PR,并通过 Code Review 后合并。
- 版本管理:使用
git tag进行版本控制。 - 冲突处理:遇到冲突时手动修复,并
git rebase保持提交整洁。 - CI/CD:使用 GitHub Actions / GitLab CI 自动化测试与部署。
- Git Hooks:使用
husky强制执行代码质量检查。
简化
在一个只有两个人的小团队中,可以简化Git开发流程,无需使用合并请求(Pull Request)这一步骤,因为合并请求通常用于多人协作时的代码审查和讨论。以下是一个适用于小团队的简化Git开发流程:
-
克隆仓库:每位开发者从远程仓库克隆代码库到本地。这可以通过**
git clone**命令完成。 -
创建分支:每位开发者在开始工作之前,可以创建一个新的分支,以便在不影响主分支的情况下进行开发。分支的命名通常应该清晰明了,反映出正在解决的问题或功能的特性。
git checkout -b feature-branch -
开发:在分支上进行代码的修改和开发。持续地进行提交(commit)以保存工作的进展。
git add . git commit -m "添加了新特性" -
拉取远程更新:在开始工作之前,以及在提交代码之前,务必从远程仓库拉取最新的更改,以避免冲突。
git pull origin main -
测试:在提交之前,确保代码通过单元测试、集成测试等必要的测试。确保代码不会破坏现有功能。
-
提交:将代码提交到本地分支。
git add . git commit -m "完成了特性X" -
推送:将本地分支推送到远程仓库。
git push origin feature-branch -
合并到主分支:在小团队中,可以相对容易地协调合并工作。开发者可以在本地合并分支到主分支(通常是**
main或master**)。git checkout main git merge feature-branch -
删除分支:完成合并后,可以删除特性分支。
git branch -d feature-branch
这个简化的流程适用于小团队,其中没有严格的代码审查和多人协作的要求。但请注意,虽然没有合并请求,但仍然应该保持团队之间的沟通和协作,以确保代码质量和一致性。此外,定期备份和维护远程仓库以防止数据丢失也很重要。