Skill6.1k repo starsupdated 5d ago
git-rollback
交互式回滚 Git 分支到历史版本;列分支、列版本、二次确认后执行 reset / revert
Install in Claude Code
Copygit clone --depth 1 https://github.com/UfoMiao/zcf /tmp/git-rollback && cp -r /tmp/git-rollback/templates/skills/zh-CN/git-rollback ~/.claude/skills/git-rollbackThen start a new Claude Code session; the skill loads automatically.
Definition
SKILL.md
# 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 强制校验,回滚后可能自动触发流水线;确认管控策略以免误部署旧版本。 ---
More from this repository
typescript-cli-architectSubagent
TypeScript CLI architecture specialist for ZCF project
zcf-config-architectSubagent
Advanced configuration management and backup system architect for ZCF project
zcf-devops-engineerSubagent
Build, deployment, and release management specialist for ZCF project
zcf-i18n-specialistSubagent
Advanced i18next internationalization specialist for ZCF project
zcf-template-engineSubagent
Template system and workflow configuration specialist for ZCF project
zcf-testing-specialistSubagent
Comprehensive testing architecture specialist for ZCF project using Vitest
zcf-tools-integration-specialistSubagent
CCR, Cometix, and CCusage integration specialist for ZCF project
bmad-masterSlash Command
bmad-master agent