关于 soft-delete-git
soft-delete-git 是用于安全删除当前 Git 分支的技能。它会检查工作区并更新默认分支,只有在确认拉取请求经 squash 合并后才允许强制删除。
主要功能
- 01检查未提交的更改
- 02识别当前分支和默认分支
- 03删除前更新默认分支
- 04默认使用安全分支删除
- 05强制删除前核实 squash 合并的拉取请求
适用场景
- 01安全删除已完成的功能分支
- 02工作区有未提交更改时请求用户指示
- 03处理通过 GitHub squash 合并的分支
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rubenflamshepherd/ ruben-agent-skills --skill soft-delete-git安装后在 Claude Code 中输入/soft-delete-git确认已加载。
详细介绍
软删除 Git 分支工作流
调用行为
如果调用此技能时未明确指定分支名称,则以当前检出的分支为目标。调用此技能即表示授权立即开始工作流:检查工作树并确定当前分支,无需询问要删除哪个分支。
只有在以下情况下才询问用户如何处理:
- 工作树不干净。
- 当前分支是默认分支。
- 安全删除失败,且强制删除需要确认。
开始前不要询问用户当前分支的名称或要求其确认。
步骤:
-
检查是否有未提交的更改
git status --porcelain如果工作树不干净,请停止并询问用户如何处理(提交、暂存或丢弃),再切换分支。
-
获取当前分支名称
git branch --show-current如果当前已处于默认分支,则没有要删除的分支——停止并询问用户指的是哪个分支。
-
确定默认分支
git symbolic-ref --short refs/remotes/origin/HEAD此命令会返回例如
origin/main的结果——默认分支是origin/后面的部分。如果未设置该引用,则回退到main。 -
检出默认分支
git checkout <default-branch> -
拉取最新更改
git pull -
软删除之前的分支
git branch -d <branch-name> -
如果软删除失败,检查是否进行了压缩合并
对于通过 GitHub 的 “Squash and merge” 合并的分支,
git branch -d会失败,因为该分支的顶端提交从来不是默认分支的祖先。检查该分支的 PR 是否确实已合并:gh pr view <branch-name> --json state,mergedAt- 如果 PR 状态为
MERGED,请先向用户确认,再使用git branch -D <branch-name>删除。 - 否则,请交由用户处理,不要强制删除。
- 如果 PR 状态为
注意:
- 软删除(安全删除,可防止删除未合并分支)时使用小写
-d - 除上述已验证的压缩合并情况外,绝不使用大写
-D(硬删除);即使符合该情况,也必须先得到用户确认 - 此工作流会确保默认分支保持最新,然后再尝试删除
评论
支持 Markdown