交互式回滚 Git 分支到历史版本;列分支、列版本、二次确认后执行 reset / revert
Scanned 9/5/2026
Install to Claude Code
npx -y skills add UfoMiao/zcf --skill git-rollback --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Git Rollback?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ufomiao-git-rollback-zcf)More formats (shields.io, HTML) on the badges page.
---
name: git-rollback
description: 交互式回滚 Git 分支到历史版本;列分支、列版本、二次确认后执行 reset / revert
disable-model-invocation: true
allowed-tools: Read(**), Exec(git fetch, git branch, git tag, git log, git reflog, git checkout, git reset, git revert, git switch), Write()
---
# 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 强制校验,回滚后可能自动触发流水线;确认管控策略以免误部署旧版本。
---
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!