---
name: git-workflow
description: Git 工作流安全助手。用于分支与 worktree 管理、主目录 main 防切换保护、Skill 稀疏检出、PR 创建/审查/合并，以及提交身份和隐私检查；也支持 CI 额度治理、敏感文件历史撤回与仓库瘦身。不要用于批量生成提交信息、项目任务分配或本地 Agent 会话编排。
license: MIT
metadata:
  version: "1.23.1"
  homepage: https://github.com/cat-xierluo/legal-skills
  author: 杨卫薪律师（微信ywxlaw）
---

# Git 工作流

维护 Git 的范围、身份、候选和交付规则。先读取用户授权、项目规则与完整任务卡，确定仓库、允许路径、目标分支、预期身份和验收；只加载当前场景需要的参考文档。

## 场景路由

在相应操作前读取该行的合同；跨场景任务按执行顺序读取，不一次性加载全部 references。

| 当前需求 | 读取与执行入口 |
|---|---|
| 本地隔离开发到交付、基准落后或共享主树被占用 | [本地 Worktree SOP](references/local-worktree-sop.md) |
| 新建或限缩 Skill/套件工作树、跨目录占用审计 | [稀疏工作树](references/sparse-worktree.md)；创建用 `scoped-worktree.py`，完整登记只读审计用 `sparse-worktree-audit.py` |
| 提交身份、Co-authored-by 污染、已合历史回执、完整 PR 范围推送 | [身份与推送](references/identity-and-push.md)，再按内容读取[隐私预检](references/privacy-preflight.md) |
| PR 创建/审查/合并、CI 未知、冲突或更新 base | [PR 流程](references/pr-workflow.md)；文本与完整历史核验读取[隐私预检](references/privacy-preflight.md) |
| 主目录固定 main、所有 Agent 独立 worktree 开发、具名集成 | [主目录分支保护](references/main-directory-protection.md)；主目录默认只读、具名采用的命令前门禁用 `main-git-gate.py` / `test-main-git-gate.py`；历史索引锁只核验/解除 |
| Monorepo 窄采用、cherry-pick 与冲突 | [改动集成](references/change-integration.md) |
| 误 amend / stash / 删分支 / reset 的事故恢复 | [事故恢复](references/accident-recovery.md)；先定位证据，再按授权恢复 |
| Skill 连续迭代、候选观察、长期功能线或里程碑 | [长期集成分支](references/long-lived-integration-branch.md) |
| 分支/工作树清理、批量验收或取代关闭旧 PR | [生命周期与清理](references/branch-lifecycle-and-cleanup.md)；只读盘点用 `branch-audit.sh` / `worktree-audit.sh` |
| 短任务/里程碑/子分支命名，Commit / Issue / PR 标题与关闭语义 | [命名与提交格式](references/issue-pr-format.md) |
| GitHub Actions 分钟耗尽、停挂或恢复 | [CI 额度治理](references/github-actions-quota-guard.md) |
| 敏感/私有材料已经发表，需从历史撤回 | [历史撤回](references/history-rewrite-and-removal.md) |
| 仓库或对象库膨胀、配置同步仓瘦身 | [膨胀审计](references/repo-bloat-audit-and-slim.md)；先区分历史、检出、缓存和任务材料 |
| 查 gh 参数 | [gh 速查](references/gh-cli-quickref.md)，命令示例仍受对应合同约束 |

本 Skill 内脚本名均相对技能目录。执行时将 `git_workflow_dir` 设置为本技能安装目录的绝对路径，在目标仓库运行；不要为了调用脚本切换到技能源码仓库。本文及参考文档提供方法，不能代替用户对外部写入或破坏性操作的授权。

## 共同约束

- 保留现有改动、暂存状态、任务材料及其他会话归属。优先复用适合的隔离检出；不通过 stash/reset/切换共享主树清掉别人的现场。提交前核实际分支和身份，worktree 默认共享 repo-local Git 配置，worker 不写 `user.name/email`。
- 单 Skill/具名套件默认**创建时稀疏检出**。副作用前固定目标、真实依赖、基准与磁盘预算，入口不支持目录范围时停在创建前，不把缺少参数当作全量许可。已有树限缩先保护 dirty/index、ignored/untracked 和 Session；详细方法只在稀疏合同维护。
- `force push`、`reset --hard`、丢弃修改、`clean -f`、强删分支、跳过 hooks/签名及改写历史须有具体明确授权。锁先查持有者，不直接删；hook 失败修复后新建提交，不绕过。默认新建 commit，amend 须用户要求；精确暂存文件。
- 普通提交发表走 `safe-push.sh`，身份和隐私核验**完整 PR range**并绑定不可变 OID；不得只查 HEAD、用 `HEAD~1` 缩窄范围或裸 push 绕门。创建/合并 PR 用 `safe-pr.py` 核最终完整文本与精确 head，不使用未经检查的自动说明。已明确授权的历史重写与精确 ref 删除按对应专页执行，不能借该例外绕过普通发表门禁。
- 合并须绑定授权、可读 diff、允许范围、独立 review 和最终 checks。未知、失败、缺失或候选漂移时停止；helper 不代替这些门禁。不绕仓库保护、自 approve 限制或用 admin override。
- Monorepo 不在本地直接 feature→main merge。按实际允许范围窄采用或正式 PR 保留目标侧其他模块；主干→长期功能线同步属于另一个方向，遵循功能线合同。
- 单任务清理绑定生命周期及精确 tip；长期分支与固定树不随子 PR 删除。已合并后的清理失败记录 `CLEANUP_PENDING`，不重放 push/merge；批量候选不等于删除授权。
- 依赖缺失、验证失败或网络结果不明时保留首失败及现场；先核真实结果再重试。缺工具不自动安装、不降级绕过门禁，环境安装沿用户及项目已有授权。

所有项目的 Agent 开发、修改、测试和提交在各自独立 worktree 中完成。主目录固定 main，仅用于稳定加载和具名集成者串行采用；禁止为了修复漂移切回 main。采用须绑定完整候选、当前 HEAD、逐文件范围和原 index/dirty，遇到并发变化停止该次采用。命令门禁默认拒绝主目录 add/commit，只有具名 owner 与匹配的 expected HEAD 可进入采用路径；这不是对任意程序的强制安全边界。GUI/绝对路径/旧 runtime 未接入仍为 NOT_VERIFIED；不重装常驻 index.lock，不擅自删除现存他人锁。

## 执行与收口

1. 固定范围和原现场，读取相应合同；普通短分支以最新远端目标为基准，长期线固定本波 OID。共享源 dirty 时保持原状。
2. 在允许范围执行，运行与产物匹配的验证，审完整 diff 和最终说明。候选变化后重跑受影响检查。
3. 进入提交、push、PR、合并等副作用前核相应授权和门禁；返回值不替代实际分支、PR 元数据或服务端合并回执。
4. 在项目既有任务源记录实际产物、退出状态、候选 OID、保留项及未验范围。分别报告本机采用、云端交付与清理状态，不把静态通过称为全流程稳定。

## 依赖

### 系统依赖

| 依赖 | 使用范围与安装方式 |
|---|---|
| Git | 全部 Git 操作；macOS 可用 Command Line Tools 提供的 Git，Linux 使用发行版包管理器 |
| Bash | `.sh` 门禁与审计；使用系统 Bash |
| Python 3.10+ | 隐私、PR、稀疏创建/审计脚本；macOS: `brew install python`，Linux: `apt install python3` |
| GitHub CLI（gh） | GitHub PR/CI 与远端状态查询，先核已有认证；macOS: `brew install gh`，Linux 按 GitHub CLI 官方安装说明 |

### Python 包

Python 入口只依赖标准库，不需要 pip 安装。稀疏审计的 `du` / `lsof` 与分支盘点的 gh 降级边界见各自合同；降级后的缺失证据必须显式保留，不能追认通过。

## 协作边界

`git-batch-commit` 负责用户明确要求的提交拆分与说明生成，沿本 Skill 的身份/隐私与 Issue 关闭规则；项目任务源维护状态，`multi-agent-orchestration` 负责 worker 派发和会话，继续引用同一稀疏合同；`release-workflow` 负责发版与资产，本 Skill 负责日常 Git/CI 治理。

项目文档体检只在项目已有流程及授权内衔接；Git Workflow 不规定其阈值、目录、任务状态或维护 PR 副作用，也不因当前请求自动派发或发布维护任务。
