git进阶03_企业分支管理策略

发布时间:2026/6/30 6:51:52

git进阶03_企业分支管理策略 02 - 企业分支管理策略本章目标掌握企业中最常用的分支策略能独立管理功能分支的完整生命周期。一、为什么需要分支策略想象一个场景你正在开发新功能线上突然出了 Bug 需要紧急修复同事的代码还没 review 完没有分支策略所有人的代码混在一起互相影响灾难现场。有分支策略各干各的互不干扰按规矩来。二、企业常见的三种分支模型模型一Git Flow适合有发版周期的项目main (master) ─────●─────────────────────●─────────●────── │ ↑ ↑ │ merge merge release/v1.0 ───────┼────────●───────●───┘ │ │ │ ↑ │ │ merge merge │ develop ───●───●────────●───────●──────────────●────── │ │ feature/login ──●●──────●────┘ │ ↑ feature/pay ──●─────●┘分支角色分支用途生命周期main生产环境代码只接受 release 合并永久develop开发集成分支永久feature/*功能开发临时完成后删除release/*发版准备临时hotfix/*紧急修复临时模型二GitHub Flow适合持续交付的项目— 企业最常用main ───●──────●──────●──────●──────●──────●────── ↑ ↑ ↑ ↑ merge merge merge merge feature/login ──●──────●───────────┘ │ merge feature/pay ─────────────────────────────●规则极简main分支永远可部署所有改动通过 Pull Request 合并合并后立即部署模型三Trunk-based适合 DevOps 成熟的团队main ───●─────●─────●─────●─────●─────●───── ↑ ↑ ↑ ↑ ↑ ↑ 各人直接往 main 提交用短生命周期分支特点分支生命周期 1 天依赖 Feature Flag 控制功能上线对 CI/CD 要求极高联通产业互联网大概率用 Git Flow 或 GitHub Flow。下面重点讲这两种。三、Git Flow 完整操作手册3.1 初始化# 安装 git-flowWindows 需要额外安装# 或者手动操作推荐理解更深入# 确保 main 分支是干净的gitcheckout maingitpull origin main3.2 开发新功能# 第一步从 develop 创建 feature 分支 gitcheckout developgitpull origin develop# 创建并切换到新分支gitcheckout-bfeature/user-login# 第二步开发并提交 # 你的代码修改...gitadd.gitcommit-mfeat(auth): add login pagegitcommit-mfeat(auth): add login API# 第三步推送并创建 Merge Request gitpush-uorigin feature/user-login# 在 GitLab 上创建 Merge Request# 目标分支develop# 审核人你的 leader# 第四步review 通过后合并 # 在 GitLab 点击 Merge或者 leader 点击# 第五步删除远程分支 gitcheckout developgitpull origin developgitbranch-dfeature/user-logingitpush origin--deletefeature/user-login3.3 发版流程# Release 分支 gitcheckout developgitcheckout-brelease/v1.2.0# 发版前的最后调整修 bug、改版本号等gitcommit-mchore: bump version to 1.2.0# 合并到 maingitcheckout maingitmerge --no-ff release/v1.2.0gittag-av1.2.0-mRelease v1.2.0gitpush origin main--tags# 合并回 developgitcheckout developgitmerge --no-ff release/v1.2.0# 清理gitbranch-drelease/v1.2.03.4 紧急修复Hotfix# 线上出 Bug 了 # 从 main 创建 hotfix 分支gitcheckout maingitcheckout-bhotfix/fix-payment-bug# 修复代码gitadd.gitcommit-mfix(payment): fix payment amount calculation# 合并到 main 并打 taggitcheckout maingitmerge --no-ff hotfix/fix-payment-buggittag-av1.2.1-mHotfix v1.2.1gitpush origin main--tags# 合并回 developgitcheckout developgitmerge --no-ff hotfix/fix-payment-bug# 清理gitbranch-dhotfix/fix-payment-bug四、分支命名规范企业必须遵守feature/user-login ← 功能分支 feature/JIRA-123-add-cart ← 带 Jira 编号的功能分支 bugfix/fix-login-error ← Bug 修复 hotfix/fix-payment-crash ← 紧急修复 release/v1.2.0 ← 发版分支 chore/update-dependencies ← 杂项维护 docs/api-documentation ← 文档 test/unit-test-login ← 测试命名规则全小写用-连接必须带类型前缀feature/、bugfix/等关联 Jira/Issue 编号如feature/JIRA-123-add-cart简短但有描述性五、合并方式选择5.1 merge保留历史gitcheckout developgitmerge --no-ff feature/user-login* merge commit |\ | * feature commit 2 | * feature commit 1 |/ * develop commit优点保留完整的分支历史缺点历史线会比较乱5.2 rebase线性历史— 企业推荐# 在 feature 分支上操作gitcheckout feature/user-login# 把 develop 的最新代码变基到你的分支上gitfetch origingitrebase origin/develop# 如果有冲突解决后继续gitrebase--continue# 推送需要 force push因为历史被重写了gitpush --force-with-lease* feature commit 2 * feature commit 1 * develop commit 2 * develop commit 1优点历史干净线性缺点需要 force push5.3 企业选择建议场景推荐方式原因小团队、功能简单merge --no-ff简单直观大团队、频繁集成rebase历史干净易追踪公共分支main/developmerge保护历史个人 feature 分支rebase保持同步六、分支操作速查表# 查看分支 gitbranch# 本地分支gitbranch-r# 远程分支gitbranch-a# 所有分支gitbranch-v# 查看各分支最后一次提交# 创建分支 gitbranch feature/new-api# 创建但不切换gitcheckout-bfeature/new-api# 创建并切换gitswitch-cfeature/new-api# 新语法推荐# 切换分支 gitcheckout feature/new-api# 旧语法gitswitch feature/new-api# 新语法推荐# 删除分支 gitbranch-dfeature/old-branch# 删除已合并的分支gitbranch-Dfeature/old-branch# 强制删除未合并gitpush origin--deletefeature/old-branch# 删除远程分支# 重命名分支 gitbranch-mold-name new-namegitpush origin old-name:new-namegitpush origin--deleteold-name# 查看分支图 gitlog--oneline--graph--all--decorate# 或用你配置的别名gitlg七、实战从零开始一个功能的完整流程假设你要开发用户登录功能项目用 GitHub Flow。# 1. 同步最新代码 gitcheckout maingitpull origin main# 2. 创建功能分支 gitcheckout-bfeature/user-login# 3. 开发多次 commit # 修改 login.html...gitaddlogin.htmlgitcommit-mfeat(auth): create login page layout# 修改 login.js...gitaddlogin.jsgitcommit-mfeat(auth): implement login validation# 修改 login.css...gitaddlogin.cssgitcommit-mstyle(auth): add login page styles# 4. 同步最新代码开发期间 develop 有更新 gitfetch origingitrebase origin/main# 如果有冲突# 1. 编辑冲突文件# 2. git add 冲突文件# 3. git rebase --continue# 5. 推送到远程 gitpush-uorigin feature/user-login# 6. 在 GitLab/GitHub 创建 Pull Request # - 标题feat(auth): implement user login# - 描述实现用户登录功能包括表单验证和 API 调用# - 审核人leader# 7. Code Review 通过后合并 # 在平台上点击 Merge# 8. 清理 gitcheckout maingitpull origin maingitbranch-dfeature/user-login八、常见错误与解决方案错误1在 main 分支上开发了# 解决把改动移到新分支gitcheckout-bfeature/my-work# 在当前位置创建新分支gitcheckout main# 回到 maingitreset--hardorigin/main# 重置 main 到远程状态错误2提交了不该提交的文件# 撤销最后一次提交保留修改gitreset--softHEAD~1# 撤销暂存取消 git addgitreset HEADfile错误3合并了冲突不知道怎么办# 查看冲突文件gitstatus# 冲突标记解释HEAD 你当前分支的代码别人提交的代码feature/xxx# 解决步骤# 1. 手动编辑文件选择保留哪部分或都保留# 2. 删除冲突标记 # 3. git add 文件# 4. git commitmerge 时或 git rebase --continuerebase 时九、练习清单学完本章请完成以下操作创建一个练习仓库手动走完 Git Flow 的 feature → develop → main 流程练习 rebase 操作把一个落后于 main 的 feature 分支变基到最新制造一次合并冲突并解决它用git log --oneline --graph --all画出分支图练习删除分支本地远程按命名规范创建 3 个不同类型的分支上一章01-Git核心概念与企业环境配置下一章03-Git工作流实战

相关新闻