Git Workflow 是一个面向团队协作的 Git 工作流技能,用于实现有效的分支策略与 Pull Request 流程。
一、用途 该技能适用于以下场景:建立团队 Git 工作流、实现分支策略、配置 Pull Request 流程、设置发布管理、改进代码审查实践。
二、前提条件 使用前需要:已安装 Git;具备仓库托管平台(GitHub、GitLab、Bitbucket);具备基础 Git 知识。
三、分支策略
- Trunk-Based Development:适合持续部署、小团队、成熟的 CI/CD。流程为从 main 创建短生命周期特性分支,频繁提交,通过 fetch + rebase 保持分支更新,并尽快(最好当天)合并回 main,随后删除分支。
- GitHub Flow:适合持续交付、Web 应用。从 main 创建特性分支,推送并创建 PR,审查后通过 PR 合并(推荐 squash),合并后删除分支。
- GitFlow:适合计划性发布、版本化产品。使用 git flow init 初始化,通过 git flow feature start/finish、git flow release start/finish、git flow hotfix start/finish 管理特性、发布与热修复分支。
四、提交规范 采用 Conventional Commits 格式:<type>(<scope>): <description>,可附带 body 与 footer。类型包括 feat、fix、docs、style、refactor、test、chore。破坏性变更使用 ! 标记并在 footer 中写明 BREAKING CHANGE。技能还提供提交信息模板(~/.gitmessage),可通过 git config --global commit.template 配置使用。
五、Pull Request 工作流 提供 PR 模板(.github/pull_request_template.md),包含描述、变更类型、测试、检查清单、关联 Issue、截图等部分。提供 GitHub 分支保护规则示例,包括必需审查数量、过期审查失效、代码所有者审查、必需状态检查、线性历史、禁止强制推送与删除等。提供 CODEOWNERS 配置示例,按前端、后端、基础设施、文档等路径指定负责人。
六、Git Hooks 提供 pre-commit 钩子示例,用于运行 lint、单元测试并检查调试语句。提供 Husky 配置示例(pre-commit 执行 lint-staged,commit-msg 执行 commitlint)以及 commitlint 配置示例,规定 type 枚举、subject 最大长度 72、body 每行最大 100。
七、发布工作流 包括使用带注释标签(git tag -a)、推送标签、通过 GitHub CLI 创建 release,以及使用 conventional-changelog 或 git-cliff 生成变更日志。
八、常用 Git 操作 涵盖 rebase 与 merge 的对比(rebase 保持整洁历史、merge 保留历史、squash merge 生成单一提交)、cherry-pick(单个提交、范围、不自动提交)、交互式 rebase(合并、改写提交)。
九、常见问题 包括合并冲突(建议频繁 rebase、沟通、使用更小的 PR)、分支分叉(使用 git pull --rebase 或 fetch + rebase)、误提交到错误分支(git reset HEAD~1 后切换分支重新提交)。
十、最佳实践 保持分支短生命周期(少于一周)、编写有意义的提交信息、一致使用 PR 模板、要求代码审查、保护 main/master 分支、用 CI 自动化检查、使用 squash merge 保持整洁历史、合并后删除分支。
十一、相关技能 semantic-versioning(版本管理)、github-actions(CI/CD 自动化)、feature-flags(功能管理)。