[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6RVMFT871684M1PFXR6Q01D":3,"skill-same:01M6RVMFT871684M1PFXR6Q01D":65},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6RVMFT871684M1PFXR6Q01D","chinese-git-workflow",null,"国内 Git 平台配置参考——Gitee、Coding.net、极狐 GitLab、CNB 的 SSH\u002FHTTPS\u002F凭据\u002FCI 接入差异与镜像同步配置。仅在用户显式 \u002Fchinese-git-workflow 时调用，不要根据上下文自动触发。","rzx007\u002FVykor","rzx007","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F22313722?v=4","01M6RVGB3GJ05PGEFHQ34TV6T0","Danovan","01M6RVGB7F20SDKPMEN9RS3N0N",3,"MIT","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fchinese-git-workflow\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33],"workflow","git workflow","git","chinese","chinese git workflow","gitlab","https","ci","ssh","coding","2026-11-10 10:12:30",false,"---\nname: chinese-git-workflow\ndescription: 国内 Git 平台配置参考——Gitee、Coding.net、极狐 GitLab、CNB 的 SSH\u002FHTTPS\u002F凭据\u002FCI 接入差异与镜像同步配置。仅在用户显式 \u002Fchinese-git-workflow 时调用，不要根据上下文自动触发。\nversion: \"1.0.0\"\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [git, chinese]\n---\n\n# 国内 Git 工作流规范\n\n## 概述\n\n国内团队用 Git 经常踩的坑：GitHub 访问不稳定、CI\u002FCD 方案照搬国外水土不服、commit message 中英混杂没有规范。本技能提供一套**完整适配国内平台和团队习惯的 Git 工作流**。\n\n**核心原则：** 工作流服务于团队效率，不是为了流程而流程。选适合团队规模的，别硬套大厂方案。\n\n## 国内 Git 平台适配\n\n### 平台对比\n\n| 特性 | Gitee | Coding.net | 极狐 GitLab | CNB | GitHub |\n|------|-------|------------|-------------|-----|--------|\n| 国内访问 | 快 | 快 | 快 | 快 | 不稳定 |\n| 免费私有仓库 | 有 | 有 | 有 | 有 | 有 |\n| CI\u002FCD | Gitee Go | Coding CI | 内置 GitLab CI | 内置（.cnb.yml） | GitHub Actions |\n| 代码审查 | PR | MR | MR | MR | PR |\n| 制品库 | 有限 | 完整 | 完整 | 完整 | Packages |\n| 适合场景 | 开源\u002F小团队 | 中大型团队 | 企业私有化 | 云原生 \u002F Docker 流水线 | 国际项目 |\n\n### Gitee 特有配置\n\n```bash\n# 设置 Gitee 远程仓库\ngit remote add origin https:\u002F\u002Fgitee.com\u002F\u003Corg>\u002F\u003Crepo>.git\n\n# Gitee 的 SSH 配置\n# ~\u002F.ssh\u002Fconfig\nHost gitee.com\n    HostName gitee.com\n    User git\n    IdentityFile ~\u002F.ssh\u002Fgitee_rsa\n    PreferredAuthentications publickey\n\n# 同时推送到 Gitee 和 GitHub（镜像同步）\ngit remote set-url --add --push origin https:\u002F\u002Fgitee.com\u002F\u003Corg>\u002F\u003Crepo>.git\ngit remote set-url --add --push origin https:\u002F\u002Fgithub.com\u002F\u003Corg>\u002F\u003Crepo>.git\n```\n\n### Coding.net 特有配置\n\n```bash\n# Coding 的仓库地址格式\ngit remote add origin https:\u002F\u002Fe.coding.net\u002F\u003Cteam>\u002F\u003Cproject>\u002F\u003Crepo>.git\n\n# Coding 支持的 SSH 地址\ngit remote add origin git@e.coding.net:\u003Cteam>\u002F\u003Cproject>\u002F\u003Crepo>.git\n```\n\n### 极狐 GitLab 特有配置\n\n```bash\n# 极狐 GitLab 私有化部署常见地址格式\ngit remote add origin https:\u002F\u002Fjihulab.com\u002F\u003Cgroup>\u002F\u003Crepo>.git\n\n# 或者企业内部部署\ngit remote add origin https:\u002F\u002Fgitlab.yourcompany.com\u002F\u003Cgroup>\u002F\u003Crepo>.git\n```\n\n### CNB（Cloud Native Build）特有配置\n\n```bash\n# CNB 仓库地址（仅支持 HTTPS，不提供 SSH 协议）\ngit remote add origin https:\u002F\u002Fcnb.cool\u002F\u003Corg>\u002F\u003Crepo>.git\n\n# HTTPS 认证：用户名固定为 cnb，密码为个人访问令牌（Access Token）\n# 在 CNB 平台 → 个人设置 → 访问令牌 中生成\ngit config credential.helper store\n```\n\n## 工作流选择\n\n### 方案一：主干开发（Trunk-Based Development）\n\n**适合：** 小团队（2-8 人）、迭代速度快、有完善的自动化测试。\n\n```\nmain ──●──●──●──●──●──●──●──●──●──\n        \\   \u002F  \\   \u002F       \\   \u002F\nfeat\u002Fx  ●─●   ●─●    fix\u002Fy ●─●\n（短命分支，1-2 天内合回）\n```\n\n**规则：**\n- 主干（main）始终保持可发布状态\n- 功能分支生命周期不超过 2 天\n- 每天至少合并一次到主干\n- 用 Feature Flag 控制未完成功能的可见性\n\n```bash\n# 从 main 拉分支\ngit checkout -b feat\u002Fuser-login main\n\n# 开发完成后，rebase 到最新 main\ngit fetch origin\ngit rebase origin\u002Fmain\n\n# 提交 PR\u002FMR，合并后删除分支\n```\n\n### 方案二：Git Flow（经典分支模型）\n\n**适合：** 中大团队、版本发布节奏固定（如双周迭代）、需要维护多个版本。\n\n```\nmain     ──●────────────────●────────────── 生产环境\n            \\              \u002F \\\nrelease     ●──●──●──●──●    ●──●──●──●── 发布分支\n            \\              \u002F\ndevelop  ──●──●──●──●──●──●──●──●──●──●── 开发主线\n             \\   \u002F  \\       \u002F\nfeat\u002Fx       ●─●    ●─────●               功能分支\n                      \\   \u002F\n                  fix\u002Fy ●─●                修复分支\n```\n\n**分支说明：**\n- `main` — 生产环境代码，只接受 release 和 hotfix 的合并\n- `develop` — 开发主线，功能分支从这里拉出，合回这里\n- `release\u002F*` — 发布分支，从 develop 拉出，只修 bug 不加功能\n- `feat\u002F*` — 功能分支\n- `hotfix\u002F*` — 紧急修复，从 main 拉出，同时合回 main 和 develop\n\n### 方案三：国内团队常用简化流程\n\n**适合：** 大多数国内中小团队的实际情况。\n\n```\nmain     ──●──────●──────●──── 生产环境（受保护）\n            \\    \u002F \\    \u002F\ndev      ──●──●─●──●──●─●──── 开发\u002F测试环境\n             \\  \u002F    \\  \u002F\nfeat\u002Fx       ●●      ●●       功能分支\n```\n\n**规则：**\n- `main` 分支受保护，只能通过 PR\u002FMR 合并\n- `dev` 分支对应测试环境，自动部署\n- 功能分支从 `dev` 拉出，合回 `dev`\n- `dev` 测试通过后，合并到 `main` 进行发布\n\n## 分支命名规范\n\n### 国内团队常用命名\n\n```bash\n# 功能分支\nfeat\u002Fuser-login              # 新功能\nfeat\u002FJIRA-1234-order-refund  # 关联任务编号\n\n# 修复分支\nfix\u002Fpayment-callback         # Bug 修复\nfix\u002FJIRA-5678-null-pointer   # 关联 Bug 编号\n\n# 发布分支\nrelease\u002Fv2.1.0               # 版本发布\nrelease\u002F2024-03-sprint       # 按迭代命名\n\n# 紧急修复\nhotfix\u002Fv2.0.1                # 线上紧急修复\nhotfix\u002Ffix-login-crash       # 描述性命名\n\n# 个人分支（部分团队使用）\ndev\u002Fzhangsan\u002Ffeat-login      # 个人开发分支\n```\n\n### 命名规则\n\n1. 全部小写，用 `-` 连接单词（不用下划线或驼峰）\n2. 前缀明确分支类型：`feat\u002F`、`fix\u002F`、`hotfix\u002F`、`release\u002F`\n3. 关联任务管理平台的编号（如有）：`feat\u002FTAPD-12345-description`\n4. 长度适中，能看出分支目的即可\n\n## 中文 Commit Message 规范\n\n### 约定式提交（Conventional Commits）中文版\n\n```\n\u003C类型>(\u003C范围>): \u003C简要描述>\n                                    ← 空行\n\u003C正文（可选）>\n                                    ← 空行\n\u003C脚注（可选）>\n```\n\n### 类型清单\n\n| 类型 | 说明 | emoji（可选） |\n|------|------|--------------|\n| feat | 新增功能 | ✨ |\n| fix | 修复 Bug | ? |\n| docs | 文档更新 | ? |\n| style | 代码格式（不影响逻辑） | ? |\n| refactor | 重构（不是新功能也不是修 Bug） | ♻️ |\n| perf | 性能优化 | ⚡ |\n| test | 测试相关 | ✅ |\n| build | 构建系统或外部依赖 | ? |\n| ci | CI\u002FCD 配置 | ? |\n| chore | 其他杂项 | ? |\n| revert | 回滚 | ⏪ |\n\n### 好的 commit message\n\n```\nfeat(购物车): 支持批量删除商品\n\n- 新增全选\u002F反选功能\n- 删除操作增加二次确认弹窗\n- 批量删除接口使用 POST \u002Fcart\u002Fbatch-delete\n\n关联需求：TAPD-12345\n```\n\n```\nfix(支付): 修复微信支付在 iOS 16 上无法唤起的问题\n\n原因：微信 SDK 8.0.33 版本在 iOS 16 上 Universal Links 校验逻辑变更，\n导致 openURL 回调失败。\n\n方案：升级 SDK 至 8.0.38，并更新 Associated Domains 配置。\n\nCloses #567\n```\n\n### 不好的 commit message\n\n```\n# 太笼统\nupdate code\nfix bug\n修改了一些东西\n\n# 没有上下文\nfix: 修复问题\nfeat: 新增功能\n\n# 中英混杂无规范\nfix：修复了一个bug，因为user login的时候会crash\n```\n\n## CI\u002FCD 平台适配\n\n### Gitee Go\n\n```yaml\n# .gitee\u002Fpipelines\u002Fpipeline.yml\nname: 构建与测试\ndisplayName: '构建与测试流水线'\n\ntriggers:\n  push:\n    branches:\n      include:\n        - main\n        - dev\n\nstages:\n  - name: 测试\n    jobs:\n      - name: 单元测试\n        steps:\n          - step: npmbuild@1\n            name: install_and_test\n            displayName: '安装依赖并执行测试'\n            inputs:\n              nodeVersion: 20\n              commands:\n                - npm ci\n                - npm test\n```\n\n### Coding CI\n\n```groovy\n\u002F\u002F Jenkinsfile（Coding CI 支持 Jenkinsfile 语法）\npipeline {\n    agent any\n\n    stages {\n        stage('安装依赖') {\n            steps {\n                sh 'npm ci'\n            }\n        }\n\n        stage('单元测试') {\n            steps {\n                sh 'npm test'\n            }\n        }\n\n        stage('构建') {\n            steps {\n                sh 'npm run build'\n            }\n        }\n\n        stage('部署到测试环境') {\n            when {\n                branch 'dev'\n            }\n            steps {\n                sh '.\u002Fscripts\u002Fdeploy-staging.sh'\n            }\n        }\n\n        stage('部署到生产环境') {\n            when {\n                branch 'main'\n            }\n            steps {\n                sh '.\u002Fscripts\u002Fdeploy-production.sh'\n            }\n        }\n    }\n\n    post {\n        failure {\n            \u002F\u002F 企业微信\u002F钉钉通知\n            sh '.\u002Fscripts\u002Fnotify-failure.sh'\n        }\n    }\n}\n```\n\n### 极狐 GitLab CI\n\n```yaml\n# .gitlab-ci.yml\nstages:\n  - test\n  - build\n  - deploy\n\nvariables:\n  NODE_IMAGE: node:20-alpine\n  # 使用国内镜像加速\n  NPM_REGISTRY: https:\u002F\u002Fregistry.npmmirror.com\n\n单元测试:\n  stage: test\n  image: $NODE_IMAGE\n  script:\n    - npm config set registry $NPM_REGISTRY\n    - npm ci\n    - npm test\n  coverage: '\u002FLines\\s*:\\s*(\\d+\\.?\\d*)%\u002F'\n\n构建:\n  stage: build\n  image: $NODE_IMAGE\n  script:\n    - npm config set registry $NPM_REGISTRY\n    - npm ci\n    - npm run build\n  artifacts:\n    paths:\n      - dist\u002F\n\n部署测试环境:\n  stage: deploy\n  script:\n    - .\u002Fscripts\u002Fdeploy-staging.sh\n  only:\n    - dev\n  environment:\n    name: staging\n\n部署生产环境:\n  stage: deploy\n  script:\n    - .\u002Fscripts\u002Fdeploy-production.sh\n  only:\n    - main\n  environment:\n    name: production\n  when: manual  # 生产环境手动触发\n```\n\n### CNB（Cloud Native Build）\n\n```yaml\n# .cnb.yml — branch-first 结构，直接指定 Docker 镜像跑流水线\nmain:\n  push:\n    - docker:\n        image: node:20\n      stages:\n        - npm ci\n        - npm test\n        - npm run build\n  pull_request:\n    - docker:\n        image: node:20\n      stages:\n        - npm run lint\n        - npm test\n```\n\n**特点：**\n- 每个流水线独立指定 Docker 镜像，天然云原生\n- 支持 `push` \u002F `pull_request` 触发\n- 同一事件可并行多条流水线\n- `stages` 也支持 `- name: xxx` + `script:` 的展开形式，复杂场景见官方文档\n\n### GitHub Actions 国内替代方案对照\n\n| GitHub Actions 功能 | Gitee Go | Coding CI | 极狐 GitLab CI | CNB |\n|---------------------|----------|-----------|----------------|-----|\n| 触发条件 | triggers | Jenkinsfile triggers | only\u002Frules | push \u002F pull_request |\n| 缓存依赖 | cache step | stash\u002Funstash | cache | 见官方文档 |\n| 制品存储 | artifacts | 制品库 | artifacts | 见官方文档 |\n| 环境变量 | env | environment | variables | env |\n| 密钥管理 | 环境变量配置 | 凭据管理 | CI\u002FCD Variables | Access Token |\n| 手动触发 | 手动运行 | 手动触发 | when: manual | 页面手动运行 |\n\n## PR\u002FMR 描述模板\n\n### 中文模板\n\n在仓库中创建 PR\u002FMR 模板文件：\n\n**Gitee：** `.gitee\u002FPULL_REQUEST_TEMPLATE.md`\n\n**Coding \u002F GitLab：** `.gitlab\u002Fmerge_request_templates\u002Fdefault.md`\n\n```markdown\n## 变更说明\n\n\u003C!-- 简要描述这次改动做了什么，解决了什么问题 -->\n\n## 变更类型\n\n- [ ] 新功能（feat）\n- [ ] Bug 修复（fix）\n- [ ] 重构（refactor）\n- [ ] 性能优化（perf）\n- [ ] 文档更新（docs）\n- [ ] 其他：\n\n## 关联信息\n\n- 需求\u002FBug 链接：\n- 设计文档：\n\n## 改动范围\n\n\u003C!-- 列出主要改动的模块和文件 -->\n\n## 测试情况\n\n- [ ] 单元测试通过\n- [ ] 手动测试通过\n- [ ] 相关模块回归测试通过\n\n## 测试方法\n\n\u003C!-- 描述如何验证这次改动 -->\n\n## 影响范围\n\n\u003C!-- 这次改动可能影响哪些功能？是否需要通知其他团队？ -->\n\n## 部署注意事项\n\n- [ ] 需要执行数据库迁移\n- [ ] 需要更新配置文件\n- [ ] 需要更新环境变量\n- [ ] 无特殊注意事项\n\n## 截图\u002F录屏\n\n\u003C!-- 如果涉及 UI 变更，贴截图或录屏 -->\n```\n\n## 常用 Git 配置\n\n### 国内环境优化\n\n```bash\n# 设置用户信息\ngit config --global user.name \"张三\"\ngit config --global user.email \"zhangsan@company.com\"\n\n# commit message 编辑器设置为 VS Code\ngit config --global core.editor \"code --wait\"\n\n# 解决中文文件名显示为转义字符的问题\ngit config --global core.quotepath false\n\n# 设置默认分支名\ngit config --global init.defaultBranch main\n\n# 代理设置（如果需要同时使用 GitHub）\ngit config --global http.https:\u002F\u002Fgithub.com.proxy socks5:\u002F\u002F127.0.0.1:7890\n\n# NPM 使用国内镜像\nnpm config set registry https:\u002F\u002Fregistry.npmmirror.com\n```\n\n### .gitignore 国内项目常见配置\n\n```gitignore\n# IDE\n.idea\u002F\n.vscode\u002F\n*.swp\n\n# 依赖\nnode_modules\u002F\nvendor\u002F\n\n# 构建产物\ndist\u002F\nbuild\u002F\n*.exe\n\n# 环境配置\n.env\n.env.local\n.env.*.local\n\n# 系统文件\n.DS_Store\nThumbs.db\ndesktop.ini\n\n# 国内平台特有\n.coding\u002F\n```\n\n## 检查清单\n\n在推送代码前，确认：\n\n- [ ] 分支命名符合团队规范\n- [ ] commit message 格式正确，类型和范围准确\n- [ ] 关联了对应的需求\u002FBug 编号\n- [ ] PR\u002FMR 描述填写完整\n- [ ] CI 流水线通过\n- [ ] 已请求相关同事 Review\n","# 国内 Git 工作流规范\n\n## 概述\n\n国内团队用 Git 经常踩的坑：GitHub 访问不稳定、CI\u002FCD 方案照搬国外水土不服、commit message 中英混杂没有规范。本技能提供一套**完整适配国内平台和团队习惯的 Git 工作流**。\n\n**核心原则：** 工作流服务于团队效率，不是为了流程而流程。选适合团队规模的，别硬套大厂方案。\n\n## 国内 Git 平台适配\n\n### 平台对比\n\n| 特性 | Gitee | Coding.net | 极狐 GitLab | CNB | GitHub |\n|------|-------|------------|-------------|-----|--------|\n| 国内访问 | 快 | 快 | 快 | 快 | 不稳定 |\n| 免费私有仓库 | 有 | 有 | 有 | 有 | 有 |\n| CI\u002FCD | Gitee Go | Coding CI | 内置 GitLab CI | 内置（.cnb.yml） | GitHub Actions |\n| 代码审查 | PR | MR | MR | MR | PR |\n| 制品库 | 有限 | 完整 | 完整 | 完整 | Packages |\n| 适合场景 | 开源\u002F小团队 | 中大型团队 | 企业私有化 | 云原生 \u002F Docker 流水线 | 国际项目 |\n\n### Gitee 特有配置\n\n```bash\n# 设置 Gitee 远程仓库\ngit remote add origin https:\u002F\u002Fgitee.com\u002F\u003Corg>\u002F\u003Crepo>.git\n\n# Gitee 的 SSH 配置\n# ~\u002F.ssh\u002Fconfig\nHost gitee.com\n    HostName gitee.com\n    User git\n    IdentityFile ~\u002F.ssh\u002Fgitee_rsa\n    PreferredAuthentications publickey\n\n# 同时推送到 Gitee 和 GitHub（镜像同步）\ngit remote set-url --add --push origin https:\u002F\u002Fgitee.com\u002F\u003Corg>\u002F\u003Crepo>.git\ngit remote set-url --add --push origin https:\u002F\u002Fgithub.com\u002F\u003Corg>\u002F\u003Crepo>.git\n```\n\n### Coding.net 特有配置\n\n```bash\n# Coding 的仓库地址格式\ngit remote add origin https:\u002F\u002Fe.coding.net\u002F\u003Cteam>\u002F\u003Cproject>\u002F\u003Crepo>.git\n\n# Coding 支持的 SSH 地址\ngit remote add origin git@e.coding.net:\u003Cteam>\u002F\u003Cproject>\u002F\u003Crepo>.git\n```\n\n### 极狐 GitLab 特有配置\n\n```bash\n# 极狐 GitLab 私有化部署常见地址格式\ngit remote add origin https:\u002F\u002Fjihulab.com\u002F\u003Cgroup>\u002F\u003Crepo>.git\n\n# 或者企业内部部署\ngit remote add origin https:\u002F\u002Fgitlab.yourcompany.com\u002F\u003Cgroup>\u002F\u003Crepo>.git\n```\n\n### CNB（Cloud Native Build）特有配置\n\n```bash\n# CNB 仓库地址（仅支持 HTTPS，不提供 SSH 协议）\ngit remote add origin https:\u002F\u002Fcnb.cool\u002F\u003Corg>\u002F\u003Crepo>.git\n\n# HTTPS 认证：用户名固定为 cnb，密码为个人访问令牌（Access Token）\n# 在 CNB 平台 → 个人设置 → 访问令牌 中生成\ngit config credential.helper store\n```\n\n## 工作流选择\n\n### 方案一：主干开发（Trunk-Based Development）\n\n**适合：** 小团队（2-8 人）、迭代速度快、有完善的自动化测试。\n\n```\nmain ──●──●──●──●──●──●──●──●──●──\n        \\   \u002F  \\   \u002F       \\   \u002F\nfeat\u002Fx  ●─●   ●─●    fix\u002Fy ●─●\n（短命分支，1-2 天内合回）\n```\n\n**规则：**\n- 主干（main）始终保持可发布状态\n- 功能分支生命周期不超过 2 天\n- 每天至少合并一次到主干\n- 用 Feature Flag 控制未完成功能的可见性\n\n```bash\n# 从 main 拉分支\ngit checkout -b feat\u002Fuser-login main\n\n# 开发完成后，rebase 到最新 main\ngit fetch origin\ngit rebase origin\u002Fmain\n\n# 提交 PR\u002FMR，合并后删除分支\n```\n\n### 方案二：Git Flow（经典分支模型）\n\n**适合：** 中大团队、版本发布节奏固定（如双周迭代）、需要维护多个版本。\n\n```\nmain     ──●────────────────●────────────── 生产环境\n            \\              \u002F \\\nrelease     ●──●──●──●──●    ●──●──●──●── 发布分支\n            \\              \u002F\ndevelop  ──●──●──●──●──●──●──●──●──●──●── 开发主线\n             \\   \u002F  \\       \u002F\nfeat\u002Fx       ●─●    ●─────●               功能分支\n                      \\   \u002F\n                  fix\u002Fy ●─●                修复分支\n```\n\n**分支说明：**\n- `main` — 生产环境代码，只接受 release 和 hotfix 的合并\n- `develop` — 开发主线，功能分支从这里拉出，合回这里\n- `release\u002F*` — 发布分支，从 develop 拉出，只修 bug 不加功能\n- `feat\u002F*` — 功能分支\n- `hotfix\u002F*` — 紧急修复，从 main 拉出，同时合回 main 和 develop\n\n### 方案三：国内团队常用简化流程\n\n**适合：** 大多数国内中小团队的实际情况。\n\n```\nmain     ──●──────●──────●──── 生产环境（受保护）\n            \\    \u002F \\    \u002F\ndev      ──●──●─●──●──●─●──── 开发\u002F测试环境\n             \\  \u002F    \\  \u002F\nfeat\u002Fx       ●●      ●●       功能分支\n```\n\n**规则：**\n- `main` 分支受保护，只能通过 PR\u002FMR 合并\n- `dev` 分支对应测试环境，自动部署\n- 功能分支从 `dev` 拉出，合回 `dev`\n- `dev` 测试通过后，合并到 `main` 进行发布\n\n## 分支命名规范\n\n### 国内团队常用命名\n\n```bash\n# 功能分支\nfeat\u002Fuser-login              # 新功能\nfeat\u002FJIRA-1234-order-refund  # 关联任务编号\n\n# 修复分支\nfix\u002Fpayment-callback         # Bug 修复\nfix\u002FJIRA-5678-null-pointer   # 关联 Bug 编号\n\n# 发布分支\nrelease\u002Fv2.1.0               # 版本发布\nrelease\u002F2024-03-sprint       # 按迭代命名\n\n# 紧急修复\nhotfix\u002Fv2.0.1                # 线上紧急修复\nhotfix\u002Ffix-login-crash       # 描述性命名\n\n# 个人分支（部分团队使用）\ndev\u002Fzhangsan\u002Ffeat-login      # 个人开发分支\n```\n\n### 命名规则\n\n1. 全部小写，用 `-` 连接单词（不用下划线或驼峰）\n2. 前缀明确分支类型：`feat\u002F`、`fix\u002F`、`hotfix\u002F`、`release\u002F`\n3. 关联任务管理平台的编号（如有）：`feat\u002FTAPD-12345-description`\n4. 长度适中，能看出分支目的即可\n\n## 中文 Commit Message 规范\n\n### 约定式提交（Conventional Commits）中文版\n\n```\n\u003C类型>(\u003C范围>): \u003C简要描述>\n                                    ← 空行\n\u003C正文（可选）>\n                                    ← 空行\n\u003C脚注（可选）>\n```\n\n### 类型清单\n\n| 类型 | 说明 | emoji（可选） |\n|------|------|--------------|\n| feat | 新增功能 | ✨ |\n| fix | 修复 Bug | ? |\n| docs | 文档更新 | ? |\n| style | 代码格式（不影响逻辑） | ? |\n| refactor | 重构（不是新功能也不是修 Bug） | ♻️ |\n| perf | 性能优化 | ⚡ |\n| test | 测试相关 | ✅ |\n| build | 构建系统或外部依赖 | ? |\n| ci | CI\u002FCD 配置 | ? |\n| chore | 其他杂项 | ? |\n| revert | 回滚 | ⏪ |\n\n### 好的 commit message\n\n```\nfeat(购物车): 支持批量删除商品\n\n- 新增全选\u002F反选功能\n- 删除操作增加二次确认弹窗\n- 批量删除接口使用 POST \u002Fcart\u002Fbatch-delete\n\n关联需求：TAPD-12345\n```\n\n```\nfix(支付): 修复微信支付在 iOS 16 上无法唤起的问题\n\n原因：微信 SDK 8.0.33 版本在 iOS 16 上 Universal Links 校验逻辑变更，\n导致 openURL 回调失败。\n\n方案：升级 SDK 至 8.0.38，并更新 Associated Domains 配置。\n\nCloses #567\n```\n\n### 不好的 commit message\n\n```\n# 太笼统\nupdate code\nfix bug\n修改了一些东西\n\n# 没有上下文\nfix: 修复问题\nfeat: 新增功能\n\n# 中英混杂无规范\nfix：修复了一个bug，因为user login的时候会crash\n```\n\n## CI\u002FCD 平台适配\n\n### Gitee Go\n\n```yaml\n# .gitee\u002Fpipelines\u002Fpipeline.yml\nname: 构建与测试\ndisplayName: '构建与测试流水线'\n\ntriggers:\n  push:\n    branches:\n      include:\n        - main\n        - dev\n\nstages:\n  - name: 测试\n    jobs:\n      - name: 单元测试\n        steps:\n          - step: npmbuild@1\n            name: install_and_test\n            displayName: '安装依赖并执行测试'\n            inputs:\n              nodeVersion: 20\n              commands:\n                - npm ci\n                - npm test\n```\n\n### Coding CI\n\n```groovy\n\u002F\u002F Jenkinsfile（Coding CI 支持 Jenkinsfile 语法）\npipeline {\n    agent any\n\n    stages {\n        stage('安装依赖') {\n            steps {\n                sh 'npm ci'\n            }\n        }\n\n        stage('单元测试') {\n            steps {\n                sh 'npm test'\n            }\n        }\n\n        stage('构建') {\n            steps {\n                sh 'npm run build'\n            }\n        }\n\n        stage('部署到测试环境') {\n            when {\n                branch 'dev'\n            }\n            steps {\n                sh '.\u002Fscripts\u002Fdeploy-staging.sh'\n            }\n        }\n\n        stage('部署到生产环境') {\n            when {\n                branch 'main'\n            }\n            steps {\n                sh '.\u002Fscripts\u002Fdeploy-production.sh'\n            }\n        }\n    }\n\n    post {\n        failure {\n            \u002F\u002F 企业微信\u002F钉钉通知\n            sh '.\u002Fscripts\u002Fnotify-failure.sh'\n        }\n    }\n}\n```\n\n### 极狐 GitLab CI\n\n```yaml\n# .gitlab-ci.yml\nstages:\n  - test\n  - build\n  - deploy\n\nvariables:\n  NODE_IMAGE: node:20-alpine\n  # 使用国内镜像加速\n  NPM_REGISTRY: https:\u002F\u002Fregistry.npmmirror.com\n\n单元测试:\n  stage: test\n  image: $NODE_IMAGE\n  script:\n    - npm config set registry $NPM_REGISTRY\n    - npm ci\n    - npm test\n  coverage: '\u002FLines\\s*:\\s*(\\d+\\.?\\d*)%\u002F'\n\n构建:\n  stage: build\n  image: $NODE_IMAGE\n  script:\n    - npm config set registry $NPM_REGISTRY\n    - npm ci\n    - npm run build\n  artifacts:\n    paths:\n      - dist\u002F\n\n部署测试环境:\n  stage: deploy\n  script:\n    - .\u002Fscripts\u002Fdeploy-staging.sh\n  only:\n    - dev\n  environment:\n    name: staging\n\n部署生产环境:\n  stage: deploy\n  script:\n    - .\u002Fscripts\u002Fdeploy-production.sh\n  only:\n    - main\n  environment:\n    name: production\n  when: manual  # 生产环境手动触发\n```\n\n### CNB（Cloud Native Build）\n\n```yaml\n# .cnb.yml — branch-first 结构，直接指定 Docker 镜像跑流水线\nmain:\n  push:\n    - docker:\n        image: node:20\n      stages:\n        - npm ci\n        - npm test\n        - npm run build\n  pull_request:\n    - docker:\n        image: node:20\n      stages:\n        - npm run lint\n        - npm test\n```\n\n**特点：**\n- 每个流水线独立指定 Docker 镜像，天然云原生\n- 支持 `push` \u002F `pull_request` 触发\n- 同一事件可并行多条流水线\n- `stages` 也支持 `- name: xxx` + `script:` 的展开形式，复杂场景见官方文档\n\n### GitHub Actions 国内替代方案对照\n\n| GitHub Actions 功能 | Gitee Go | Coding CI | 极狐 GitLab CI | CNB |\n|---------------------|----------|-----------|----------------|-----|\n| 触发条件 | triggers | Jenkinsfile triggers | only\u002Frules | push \u002F pull_request |\n| 缓存依赖 | cache step | stash\u002Funstash | cache | 见官方文档 |\n| 制品存储 | artifacts | 制品库 | artifacts | 见官方文档 |\n| 环境变量 | env | environment | variables | env |\n| 密钥管理 | 环境变量配置 | 凭据管理 | CI\u002FCD Variables | Access Token |\n| 手动触发 | 手动运行 | 手动触发 | when: manual | 页面手动运行 |\n\n## PR\u002FMR 描述模板\n\n### 中文模板\n\n在仓库中创建 PR\u002FMR 模板文件：\n\n**Gitee：** `.gitee\u002FPULL_REQUEST_TEMPLATE.md`\n\n**Coding \u002F GitLab：** `.gitlab\u002Fmerge_request_templates\u002Fdefault.md`\n\n```markdown\n## 变更说明\n\n\u003C!-- 简要描述这次改动做了什么，解决了什么问题 -->\n\n## 变更类型\n\n- [ ] 新功能（feat）\n- [ ] Bug 修复（fix）\n- [ ] 重构（refactor）\n- [ ] 性能优化（perf）\n- [ ] 文档更新（docs）\n- [ ] 其他：\n\n## 关联信息\n\n- 需求\u002FBug 链接：\n- 设计文档：\n\n## 改动范围\n\n\u003C!-- 列出主要改动的模块和文件 -->\n\n## 测试情况\n\n- [ ] 单元测试通过\n- [ ] 手动测试通过\n- [ ] 相关模块回归测试通过\n\n## 测试方法\n\n\u003C!-- 描述如何验证这次改动 -->\n\n## 影响范围\n\n\u003C!-- 这次改动可能影响哪些功能？是否需要通知其他团队？ -->\n\n## 部署注意事项\n\n- [ ] 需要执行数据库迁移\n- [ ] 需要更新配置文件\n- [ ] 需要更新环境变量\n- [ ] 无特殊注意事项\n\n## 截图\u002F录屏\n\n\u003C!-- 如果涉及 UI 变更，贴截图或录屏 -->\n```\n\n## 常用 Git 配置\n\n### 国内环境优化\n\n```bash\n# 设置用户信息\ngit config --global user.name \"张三\"\ngit config --global user.email \"zhangsan@company.com\"\n\n# commit message 编辑器设置为 VS Code\ngit config --global core.editor \"code --wait\"\n\n# 解决中文文件名显示为转义字符的问题\ngit config --global core.quotepath false\n\n# 设置默认分支名\ngit config --global init.defaultBranch main\n\n# 代理设置（如果需要同时使用 GitHub）\ngit config --global http.https:\u002F\u002Fgithub.com.proxy socks5:\u002F\u002F127.0.0.1:7890\n\n# NPM 使用国内镜像\nnpm config set registry https:\u002F\u002Fregistry.npmmirror.com\n```\n\n### .gitignore 国内项目常见配置\n\n```gitignore\n# IDE\n.idea\u002F\n.vscode\u002F\n*.swp\n\n# 依赖\nnode_modules\u002F\nvendor\u002F\n\n# 构建产物\ndist\u002F\nbuild\u002F\n*.exe\n\n# 环境配置\n.env\n.env.local\n.env.*.local\n\n# 系统文件\n.DS_Store\nThumbs.db\ndesktop.ini\n\n# 国内平台特有\n.coding\u002F\n```\n\n## 检查清单\n\n在推送代码前，确认：\n\n- [ ] 分支命名符合团队规范\n- [ ] commit message 格式正确，类型和范围准确\n- [ ] 关联了对应的需求\u002FBug 编号\n- [ ] PR\u002FMR 描述填写完整\n- [ ] CI 流水线通过\n- [ ] 已请求相关同事 Review\n",{"name":5,"license":15,"version":39,"metadata":40,"description":7},"1.0.0",{"hermes":41},{"tags":42},[26,27],"main","11fa3057bb1aff51d77b97648803dec2b2ea62d9",".agents\u002Fskills\u002Fchinese-git-workflow",2,"https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor","https:\u002F\u002Frzx007.github.io\u002FVykor\u002F","https:\u002F\u002Fgithub.com\u002Frzx007","2026-11-10 21:43:48",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add rzx007\u002FVykor --skill chinese-git-workflow",{"tool":57,"command":58},"bunx","bunx skills add rzx007\u002FVykor --skill chinese-git-workflow",{"tool":60,"command":61},"pnpm","pnpm dlx skills add rzx007\u002FVykor --skill chinese-git-workflow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fchinese-git-workflow\u002FSKILL.md",true,[],[66,84,96,116,128,141],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":80,"publishedAt":34},"01M6RVYYTPGG9WWWV4QAY0YEY3","writing-skills","当创建新技能、编辑现有技能或在部署前验证技能是否有效时使用","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-skills\u002FSKILL.md",[72,75],{"categoryNo":73,"categoryName":74,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[81,82,83],"writing skills","writing","documentation",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":92,"publishedAt":34},"01M6RVYE486HE8NQ2M4G5DNG63","writing-plans","当你有规格说明或需求用于多步骤任务时使用，在动手写代码之前","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-plans\u002FSKILL.md",[90,91],{"categoryNo":73,"categoryName":74,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},[93,94,82,95,83],"plans","writing plans","planning",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":103,"publishedAt":34},"01M6RVY778PEDPWQ0DCM25QW3A","workflow-runner","在 Claude Code \u002F OpenClaw \u002F Cursor 中直接运行 agency-orchestrator YAML 工作流——无需 API key，使用当前会话的 LLM 作为执行引擎。当用户提供 .yaml 工作流文件或要求多角色协作完成任务时触发。","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fworkflow-runner\u002FSKILL.md",[102],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[104,105,24,106,107,108,109,110,111,112,113,114,115],"workflow runner","runner","协作","文件","agency","orchestrator","cursor","api","execution","yaml","code","openclaw",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":34},"01M6RVY4NR6RRPV174AB706A13","verification-before-completion","在宣称工作完成、已修复或测试通过之前使用，在提交或创建 PR 之前——必须运行验证命令并确认输出后才能声称成功；始终用证据支撑断言","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",[],[123,124,125,126,127],"verification before completion","verification","quality","pr","testing",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":34},"01M6RVY1ZQ6ADVCZGBS371HD88","using-superpowers","在开始任何对话时使用——确立如何查找和使用技能，要求在任何响应（包括澄清性问题）之前调用 Skill 工具","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fusing-superpowers\u002FSKILL.md",[],[135,136,137,138,139,140],"superpowers","using superpowers","对话","Meta","工具","getting-started",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":34},"01M6RVXJFEQ00P7XBQ8FBEKKJ2","using-git-worktrees","当需要开始与当前工作区隔离的功能开发，或在执行实现计划之前使用——通过原生工具或 git worktree 回退机制确保隔离工作区存在","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fusing-git-worktrees\u002FSKILL.md",[],[148,26,149,150,151,24,152,153,139],"using git worktrees","git worktrees","worktrees","Using git","worktree","git worktree"]