SuperAPI AI 工具集

git-flow

编程与开发

查看项目

更新于 10-22 17:17

技能介绍

用途

本技能为 MEDcury HIS 系列仓库提供统一的 Git 工作流约定,覆盖分支命名、提交信息风格、MR 合并目标与发布标签,适用于创建分支、开始提交、发起合并请求或发布版本等场景。

使用前的上下文解析

在选分支或执行命令前,需先读取仓库说明、git status --short --branch、git remote -v、git branch -a 以及近期提交与合并历史,并在比较前获取相关远程引用。

源分支、基线、目标与命名按以下优先级确定:用户明确指令 → 仓库说明 → 已验证的远程/MR/PR 上下文 → 技能中的默认约定。仅凭默认分支不能证明预期的合并目标;若剩余歧义会改变结果,只问一个聚焦问题。

这些表格描述的是 MEDcury 约定,不适用于所有仓库;其他仓库应使用其已验证的约定。保留已有任务分支及无关的暂存/未暂存改动,若切换会干扰则使用独立 worktree。未提供工单时,按仓库的描述性分支约定命名,不要虚构工单号。

在执行变更前,说明选定的基线、工作分支和预期目标。仅在已有授权范围内继续;创建分支或提交本身不授权推送、发布版本或合并。

分支命名

  • 功能分支:feature/PROJ-XXX-short-description,基线 develop
  • 缺陷修复:bugfix/PROJ-XXX-short-description,基线 main
  • 热修复:hotfix/PROJ-XXX-short-description,基线 main
  • 发布分支:release/vX.Y.Z,基线 develop

客户站点变体:分支名前缀 <site>-,并替换基线/目标分支,例如 <site>-feature/PROJ-XXX-short-description(基线 <site>-develop)、<site>-hotfix/PROJ-XXX-short-description(基线 <site>-main)、<site>-release/vX.Y.Z。

若工单已有分支(在 git branch -a 中检查),应继续在该分支上工作而非新建。部分既有分支带基线后缀(如 feature/MPD-XXX-desc-develop),继续时保留该后缀。

提交信息

优先匹配仓库现有风格:运行 git log --oneline -10,采用该仓库的主导风格。

  • centrix(核心产品):[PROJ-XXX] <type>: <description>,示例 [MPD-1075] feat: show blood fields in order profile
  • 前端模块(dental-module、bloodbank_module):[PROJ-XXX] - [Area] <Description>,示例 [MPD-1014] - [Dental] Sort submitted items oldest-first
  • API 服务(medhis-*-services):<type>(<scope>): <description>,示例 feat(order): expose Blood Bank infusion duration

类型:feat fix refactor test docs chore style perf ci build revert。

MR 合并目标

  • feature/* → develop,合并后删除分支
  • bugfix/* → main,使用 git-cherry-pick 技能回拣到 develop
  • hotfix/* → main,回拣到 develop
  • release/* → main,将 main 回合到 develop(发布分支只允许缺陷修复)

并非所有仓库都有 develop;单流仓库(如 bloodbank_module、medhis-closed-api-services)将 feature/* 直接合入 main。发起请求前应通过仓库说明、远程分支和既有 MR/PR 历史验证适用目标;若有冲突且用户未选定目标,应询问而非静默更改。

客户站点:将 main/develop 替换为 <site>-main/<site>-develop。已验证为 GitLab 远程时使用 glab(参见 glab-mr 技能),GitHub 远程使用 GitHub 工作流。受保护的集成分支应通过 MR/PR 合并。

标签

使用仓库已验证的标签约定;MEDcury 约定为 Semver X.Y.Z,无前导零。需检查 CI 配置以确定推送标签会触发什么,验证发布提交与既有标签,并仅在明确的发布授权下发布。

快速命令

# 在验证远程与基线、并保护本地改动后:
git fetch <remote> <base>
git switch -c <working-branch> <remote>/<base>

# 用已验证的上游更新已有本地分支时:
git pull --ff-only

完成前核对

报告完成前验证当前分支与请求的差异;报告实际执行的检查,并区分本地改动、提交、已推送改动、打开的 MR/PR、待处理 CI 与已合并工作。仅在授权下执行删除分支与回拣等后续操作。

规则

  • 受保护的集成分支(含适用的站点前缀分支)使用 MR/PR
  • 每个工作分支限定于其工单/任务与目标,保留既有命名
  • 功能分支生命周期为一个冲刺,合并后删除
  • 发布分支只做缺陷修复,不加新功能