ABC GIT FLOW 分支管理是 ABC 定制化的 Git 工作流,基于 git-flow 扩展,支持灰度发布流程。该技能用于执行 git abc 命令进行分支操作,并提供开发流程指导。
一、安装与初始化
macOS 安装命令: sudo curl https://cis-static-common.oss-cn-shanghai.aliyuncs.com/assets/abc-git-flow/git-abc-flow-install.sh | sh 如果报错 Bad CPU type,需要执行: /usr/sbin/softwareupdate --install-rosetta --agree-to-license
Windows 安装命令: curl -# -O https://static-common-cdn.abcyun.cn/assets/abc-git-flow/install.bat && call install.bat
Linux 安装命令: curl https://static-common-cdn.abcyun.cn/assets/abc-git-flow/install-linux.sh | sh
首次使用需要在工程目录下执行初始化: git abc init git abc tag config <前缀> # 配置 tag 前缀,如 pc、charge
二、分支结构
长期分支(禁止直接开发): master 存放稳定的生产代码,对应正式环境; gray 存放灰度环境代码,对应灰度环境; rc 用于预发布测试,对应预发布环境; develop 为开发基础分支,对应测试环境; experience 为体验分支,不保证稳定性,对应体验环境。
临时分支: feature/* 来源于 develop,用于新功能开发; hotfix/* 来源于 master,用于正式环境紧急修复; hotfix-g/* 来源于 gray,用于灰度环境紧急修复。
三、典型工作流程
新需求开发:
- 创建 feature 分支:git abc feature start <name>
- 开发完成后,单人开发时 rebase develop: git fetch origin develop git rebase origin/develop
- 创建提测 tag(f-tag):git abc tag create,选择“需求提测(f)”
- 测试通过后合回 develop:git abc feature finish <name> 注意事项:多人协作同一 feature 时禁用 rebase,改用 merge;finish 后记得 push develop 分支。
正式环境 Bug 修复:
- 从 master 创建 hotfix 分支:git abc hotfix start <name>
- 修复后创建测试 tag:git abc tag create,选择“测试环境(t)”
- 测试通过后合入所有分支:git abc hotfix finish <name>
- 推送所有受影响的分支:git push origin master gray rc develop
- 删除 hotfix 分支: git branch -d hotfix/<name> git push origin --delete hotfix/<name> 关键提醒:hotfix finish 会自动合入 master、gray、rc、develop 四个分支,务必全部 push。
灰度环境 Bug 修复:
- 从 gray 创建 hotfix-g 分支:git abc hotfix-g start <name>
- 修复后创建测试 tag:git abc tag create,选择“测试环境(t)”
- 测试通过后合入相关分支:git abc hotfix-g finish <name>
- 推送所有受影响的分支:git push origin gray rc develop
- 删除 hotfix-g 分支: git branch -d hotfix-g/<name> git push origin --delete hotfix-g/<name> 关键提醒:hotfix-g finish 会合入 gray、rc、develop 三个分支(不包含 master)。
发布流程: 集成测试(t-tag):在 develop 分支打 t-tag: git checkout develop git abc tag create # 选择“测试环境(t)”
发预发布(p-tag):将 develop 合入 rc: git abc rc start 打预发布 tag: git abc tag create # 选择“预发布环境(p)” git push origin rc
发灰度(g-tag):将 rc 合入 gray: git abc rc finish git push origin gray 打灰度 tag: git checkout gray git abc tag create # 选择“灰度环境(g)”
发全量(v-tag):将 gray 合入 master: git abc gray publish git push origin master 打全量 tag: git checkout master git abc tag create # 选择“正式环境(v)”
四、Tag 命名规范
通过 git abc tag create 交互式创建的 tag 自动符合规范。格式为:前缀年份.周数.构建号。 前缀用途与示例: xxx-f 用于 feature 功能提测,示例 pc-f2021.09.01; xxx-t 用于集成测试,示例 pc-t2021.09.02; xxx-p 用于预发布,示例 pc-p2021.09.01; xxx-g 用于灰度发布,示例 pc-g2021.09.01; xxx-v 用于正式发布,示例 pc-v2021.09.01。
五、Rebase 使用原则
推荐使用 rebase 的场景:独立开发的 feature 分支合入 develop 最新代码;独立开发的 hotfix 分支合入 master 最新代码;本地分支同步远程 git pull --rebase。 禁止使用 rebase 的场景:多人协作的分支,会导致历史混乱。
六、Merge Request 管理
创建 MR(交互式选择目标分支和评审者):git abc mr create 配置云效 Token:git abc mr config
七、非交互式脚本
git abc 部分命令(如 tag create、mr create)需要交互式输入,在自动化场景(CI/CD、脚本批处理、IDE 集成等)中不方便使用,因此提供了 Python 脚本作为非交互式替代方案。
安装依赖:pip install requests
Tag 创建脚本(scripts/tag_create.py)示例: scripts/tag_create.py v --deps "abc-auth" --operation "无" scripts/tag_create.py f --deps "无" --operation "无" --remark "feat: 实现新功能" --tapd-id "1122044681001112866" scripts/tag_create.py g --deps "abc-auth" --operation "无" scripts/tag_create.py v --skipdeploy 参数说明:tag_type 为 Tag 类型(f/t/v/g/p),必填;--deps 为依赖的服务,上车/提测时必填;--operation 为需要的操作,上车/提测时必填;--remark 为备注/说明,提测时必填;--tapd-id 为关联的 TAPD ID,否(f tag 可选);-b/--business 为业务线(默认 abc-his),否;--prefix 为 Tag 前缀(默认从 git config 读取),否;--hotfix 为 Hotfix 模式,否;--skipdeploy 为跳过上车/提测仅创建 tag,否。
MR 创建脚本(scripts/mr_create.py)示例: scripts/mr_create.py -t develop -T "feat: 新功能开发" -r 张三 李四 scripts/mr_create.py -t develop -T "fix: 修复bug" -r 张三 -d "修复了xxx问题" scripts/mr_create.py -t develop -T "feat: xxx" -r 张三 --skip-notify 参数说明:-t/--target 为目标分支,必填;-T/--title 为 MR 标题,必填;-r/--reviewers 为评审者姓名(多个用空格分隔),必填;-d/--description 为 MR 描述,否;--skip-notify 为跳过企业微信通知,否。 前置条件:MR 创建需要先配置云效 Token,运行 git abc mr config 或手动创建 ~/.abc-fed-config/mr.json。
八、命令速查
git abc init 初始化仓库; git abc feature start <name> 从 develop 创建;git abc feature finish <name> 合回 develop; git abc hotfix start <name> 从 master 创建;git abc hotfix finish <name> 合入 master/gray/rc/develop; git abc hotfix-g start <name> 从 gray 创建;git abc hotfix-g finish <name> 合入 gray/rc/develop; git abc rc start 执行 develop → rc;git abc rc finish 执行 rc → gray; git abc gray publish 执行 gray → master; git abc tag create 交互式创建 tag;git abc tag create <类型> 直接指定 tag 类型(v/g/p/f/t);git abc tag show [类型] 查看最近 tag;git abc tag config [前缀] 配置 tag 前缀; git abc mr create 创建 Merge Request;git abc mr config 配置云效 Token; git abc -v 查看版本;git abc -h 查看帮助;git abc update 更新工具。
九、操作指导原则
执行前确认:执行 git abc 命令前,先用 git status 确认工作区干净; 及时推送:finish 操作后,立即推送所有受影响的分支; 清理分支:合并完成后删除已废弃的临时分支; 冲突处理:遇到合并冲突时,仔细解决后再继续操作; 观察提示:注意命令执行过程中的提示信息,按提示操作。
十、适用场景与限制
该技能适用于使用 ABC 定制 Git 工作流的团队,覆盖新功能开发、正式环境与灰度环境紧急修复、集成测试、预发布、灰度发布、全量发布以及 Merge Request 管理等场景。在 CI/CD、脚本批处理、IDE 集成等非交互式终端环境中,建议优先使用非交互式脚本创建 Tag 和 MR,避免终端阻塞。使用前需完成对应平台的安装与初始化,MR 创建需先配置云效 Token。