بنقرة واحدة
git-undo
撤销 git 操作的安全向导。当用户说「帮我撤销/我 commit 错了/怎么恢复/误删分支/push 错了/git 救命/git 怎么回退/我把改动搞丢了」时触发。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
撤销 git 操作的安全向导。当用户说「帮我撤销/我 commit 错了/怎么恢复/误删分支/push 错了/git 救命/git 怎么回退/我把改动搞丢了」时触发。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
把 Claude Code 汉化 —— 让 Claude 默认用中文回复,并给每个工具调用加中文 tooltip 提示。当用户想"汉化 Claude Code""让 Claude 说中文""装中文命令提示""localize Claude Code to Chinese"时使用。
列出可清理的本地分支(已合并 / 陈旧),供用户确认后再删。当用户说"清理分支 / 哪些分支可以删 / 列出过期分支 / 整理 git 分支 / 哪些分支可以清掉"时触发。
把一个函数/代码片段/diff 写成一首俳句或打油诗,抓住代码的「神韵」。当用户说「给这段代码写首诗」、「code-haiku」、「把这个函数写成俳句」、「这个 diff 怎么用诗表达」时触发。
把一个文件的修改史讲成故事——谁、何时、为何改了它。当用户说「讲讲这个文件的故事 / git-blame-story / 这个文件经历了什么 / 追溯文件历史 / 帮我看看这个文件的来龙去脉」时触发。
扫描 Dockerfile 的体积/安全/缓存/最佳实践问题并给出中文修法。当用户说"帮我检查 Dockerfile / Dockerfile 有没有问题 / 审查 Dockerfile / dockerfile-doctor"时触发。
按表结构 / struct / TS interface / JSON shape 生成假数据与测试种子数据,支持 JSON / SQL INSERT / CSV / NDJSON 输出格式。触发词:/mock-data-gen、帮我生成测试数据、帮我造数据、生成假数据、生成种子数据。
| name | git-undo |
| description | 撤销 git 操作的安全向导。当用户说「帮我撤销/我 commit 错了/怎么恢复/误删分支/push 错了/git 救命/git 怎么回退/我把改动搞丢了」时触发。 |
把用户用中文描述的"出了什么事",变成安全的恢复命令 + 清晰解释 + 风险提示。 能用非破坏性方式就不用破坏性;拿不准意图先问;reflog 是后悔药要善用。
先跑 state.sh 了解现状,再结合用户描述判断:
bash <skill>/bin/state.sh
state.sh 会输出(纯只读):
git status -s(工作区/暂存区状态)git log --onelinegit reflog 最近 10 条读完状态后,先理解用户想达成什么目标,再给命令。 常见误解:用户说"撤销 commit"可能是要:
--soft)--hard,破坏性)git revert)意图不明时直接追问,不臆测。
# 保留改动、取消提交(最安全,推荐)
git reset --soft HEAD~1
# 取消提交并取消暂存(改动还在工作区)
git reset HEAD~1
# ⚠️ 破坏性:取消提交 + 丢弃改动(不可恢复)
git reset --hard HEAD~1
建议:先问用户是否要保留改动。默认推荐
--soft。
# 丢弃单个文件的改动
git restore <file>
# 或(旧版 git)
git checkout -- <file>
# ⚠️ 破坏性:丢弃所有未暂存改动
git restore .
# ⚠️ 破坏性:同时清掉未跟踪文件
git clean -fd
警告:工作区改动一旦丢弃无法找回,执行前建议
git stash兜底。
reset --hard,想找回丢失的提交reflog 是后悔药:
# 1. 查看 reflog 找到误操作前的 SHA
git reflog
# 2. 恢复到那个状态
git reset --hard <sha>
# 或只切到那个提交建新分支
git branch recover-branch <sha>
reflog 默认保留 90 天,所以大部分情况都能找回。
# 非破坏性(推荐):在目标分支上 revert
git revert <sha>
git push
# ⚠️ 破坏性(需上游配合,有协作者时极危险):
git push --force-with-lease origin <branch>
强烈建议先用
revert。push -f会覆盖他人工作,多人协作时须取得团队同意。
# 1. 从 reflog 找到该分支最后的 SHA
git reflog --all | grep <branch-name>
# 或
git reflog
# 2. 重建分支
git branch <branch-name> <sha>
如果已经 push 过,也可以从远端恢复:
git checkout -b <branch-name> origin/<branch-name>
# 只改最后一条 commit(未 push 时安全)
git commit --amend
# 不打开编辑器直接改
git commit --amend -m "新的 commit 信息"
⚠️ 已 push 后 amend 会改变提交 SHA,需要
push -f,有协作者时慎用。
# 非破坏性(推荐):生成反向提交,历史保留
git revert <sha>
git push
# ⚠️ 破坏性(改写历史,多人协作时危险):
git reset --hard <sha>
git push --force-with-lease
已经 push 的历史应优先用
revert。reset + push -f会影响所有从该分支拉取代码的人。
凡涉及以下命令,必须:
⚠️ 或 【警告】)说明风险git stash 或记录当前 SHA)破坏性命令清单:
git reset --hardgit push --force / git push -f / git push --force-with-leasegit clean -fdgit restore .(全量丢弃)git rebase(改写历史时)## 你的现状
(基于 state.sh 输出,用中文描述当前分支、有无未提交改动、最近提交是什么)
## 理解你的意图
(复述用户想做什么;若有歧义,列出 2-3 种可能并追问)
## 恢复命令
```bash
# 推荐(非破坏性)
<命令>
# ⚠️ 破坏性备选(需确认)
<命令>
(白话讲:这个命令做了什么,为什么安全/不安全)
(如有破坏性操作,说明:会丢失什么、是否可找回、建议的兜底步骤)
git stash # 或
git log --oneline -3 # 记下当前 SHA
## 硬规则
1. **能用非破坏性方式就不用破坏性**:`revert` 优先于 `reset`;`--soft` 优先于 `--hard`。
2. **不臆测用户意图**:意图不明时直接追问,不擅自选择破坏性路径。
3. **reflog 是后悔药**:大多数误操作都可通过 reflog 找回,优先指引用户查 reflog。
4. **破坏性命令必须显著警告**:用醒目标记(⚠️)提示风险,建议兜底后再执行,**等用户确认**。
5. **脚本只读,不替用户执行恢复命令**:state.sh 是采集工具;恢复命令展示给用户自行执行。
6. **不替用户做 push -f**:即使用户说"帮我 force push",也只给命令、不执行;需显示风险后由用户自己操作。
7. **上下文不足时追问**:若不知道是哪个分支、哪条提交、push 到了哪里,先问清楚。
## 边界
- 只处理本地和已知远端状态;无法访问用户的远端仓库。
- 不扫历史仓库的所有 reflog(只看最近 10 条),若找不到需提示用户增加范围。
- 不替用户执行任何命令,只给命令和解释。
- 若用户的 git 版本较旧(< 2.23),`git restore` 不可用,提示用 `git checkout --`。