UNPKG

zcf

Version:

Zero-Config Claude-Code Flow - One-click configuration tool for Claude Code

91 lines (67 loc) 4.63 kB
--- description: 交互式回滚 Git 分支到历史版本;列分支、列版本、二次确认后执行 reset / revert allowed-tools: Read(**), Exec(git fetch, git branch, git tag, git log, git reflog, git checkout, git reset, git revert, git switch), Write() argument-hint: [--branch <branch>] [--target <rev>] [--mode reset|revert] [--depth <n>] [--dry-run] [--yes] # examples: # - /git-rollback # 全交互模式,dry‑run # - /git-rollback --branch dev # 直接选 dev,其他交互 # - /git-rollback --branch dev --target v1.2.0 --mode reset --yes --- # Claude Command: Git Rollback **目的**:安全、可视地将指定分支回滚到旧版本。 默认处于 **只读预览 (`--dry-run`)**;真正执行需加 `--yes` 或在交互中确认。 --- ## Usage ```bash # 纯交互:列出分支 → 选分支 → 列最近 20 个版本 → 选目标 → 选择 reset 或 revert → 二次确认 /git-rollback # 指定分支,其他交互 /git-rollback --branch feature/calculator # 指定分支与目标 commit,并用 hard‑reset 一键执行(危险) /git-rollback --branch main --target 1a2b3c4d --mode reset --yes # 只想生成 revert 提交(非破坏式回滚),预览即可 /git-rollback --branch release/v2.1 --target v2.0.5 --mode revert --dry-run ``` ### Options | 选项 | 说明 | | ---------------------- | ---------------------------------------------------------------------------------- | | `--branch <branch>` | 要回滚的分支;缺省时交互选择。 | | `--target <rev>` | 目标版本(commit Hash、Tag、reflog 引用都行);缺省时交互选择近 `--depth` 条记录。 | | `--mode reset\|revert` | `reset`:硬回滚历史;`revert`:生成反向提交保持历史完整。默认询问。 | | `--depth <n>` | 在交互模式下列出最近 n 个版本(默认 20)。 | | `--dry-run` | **默认开启**,只预览即将执行的命令。 | | `--yes` | 跳过所有确认直接执行,适合 CI/CD 脚本。 | --- ## 交互流程 1. **同步远端** `git fetch --all --prune` 2. **列分支** `git branch -a`(本地+远端,过滤受保护分支) 3. **选分支** 用户输入或传参 4. **列版本** `git log --oneline -n <depth>` + `git tag --merged` + `git reflog -n <depth>` 5. **选目标** 用户输入 commit hash / tag 6. **选模式** `reset` `revert` 7. **最终确认** (除非 `--yes`) 8. **执行回滚** - `reset`:`git switch <branch> && git reset --hard <target>` - `revert`:`git switch <branch> && git revert --no-edit <target>..HEAD` 9. **推送建议** 提示是否 `git push --force-with-lease`(reset)或普通 `git push`(revert) --- ## 安全护栏 - **备份**:执行前自动在 reflog 中记录当前 HEAD,可用 `git switch -c backup/<timestamp>` 恢复。 - **保护分支**:如检测到 `main` / `master` / `production` 等受保护分支且开启 `reset` 模式,将要求额外确认。 - **--dry-run 默认开启**:防止误操作。 - **--force 禁止**:不提供 `--force`;如需强推,请手动输入 `git push --force-with-lease`。 --- ## 适用场景示例 | 场景 | 调用示例 | | ----------------------------------------------- | ---------------------------------------------------------------- | | 热修补丁上线后发现 bug,需要回到 Tag `v1.2.0` | `/git-rollback --branch release/v1 --target v1.2.0 --mode reset` | | 运维同事误推了 debug 日志提交,需要生成反向提交 | `/git-rollback --branch main --target 3f2e7c9 --mode revert` | | 调研历史 bug,引导新人浏览分支历史 | `/git-rollback` (全交互,dry‑run) | --- ## 注意 1. **reset vs revert** - **reset** 会改变历史,需要强推并可能影响其他协作者,谨慎使用。 - **revert** 更安全,生成新提交保留历史,但会增加一次记录。 2. **嵌入式仓库** 常有大体积二进制文件;回滚前请确保 LFS/子模块状态一致。 3. 若仓库启用了 CI 强制校验,回滚后可能自动触发流水线;确认管控策略以免误部署旧版本。 ---