mcpField
S
soft-delete-git

soft-delete-git

github.com/rubenflamshepherd开发0149 次安装4 周前更新
代码仓库

关于 soft-delete-git

soft-delete-git 是用于安全删除当前 Git 分支的技能。它会检查工作区并更新默认分支,只有在确认拉取请求经 squash 合并后才允许强制删除。

主要功能

  1. 01检查未提交的更改
  2. 02识别当前分支和默认分支
  3. 03删除前更新默认分支
  4. 04默认使用安全分支删除
  5. 05强制删除前核实 squash 合并的拉取请求

适用场景

  1. 01安全删除已完成的功能分支
  2. 02工作区有未提交更改时请求用户指示
  3. 03处理通过 GitHub squash 合并的分支

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rubenflamshepherd/ruben-agent-skills --skill soft-delete-git

安装后在 Claude Code 中输入/soft-delete-git确认已加载。

详细介绍

软删除 Git 分支工作流

调用行为

如果调用此技能时未明确指定分支名称,则以当前检出的分支为目标。调用此技能即表示授权立即开始工作流:检查工作树并确定当前分支,无需询问要删除哪个分支。

只有在以下情况下才询问用户如何处理:

  • 工作树不干净。
  • 当前分支是默认分支。
  • 安全删除失败,且强制删除需要确认。

开始前不要询问用户当前分支的名称或要求其确认。

步骤:

  1. 检查是否有未提交的更改

    git status --porcelain
    

    如果工作树不干净,请停止并询问用户如何处理(提交、暂存或丢弃),再切换分支。

  2. 获取当前分支名称

    git branch --show-current
    

    如果当前已处于默认分支,则没有要删除的分支——停止并询问用户指的是哪个分支。

  3. 确定默认分支

    git symbolic-ref --short refs/remotes/origin/HEAD
    

    此命令会返回例如 origin/main 的结果——默认分支是 origin/ 后面的部分。如果未设置该引用,则回退到 main。

  4. 检出默认分支

    git checkout <default-branch>
    
  5. 拉取最新更改

    git pull
    
  6. 软删除之前的分支

    git branch -d <branch-name>
    
  7. 如果软删除失败,检查是否进行了压缩合并

    对于通过 GitHub 的 “Squash and merge” 合并的分支,git branch -d 会失败,因为该分支的顶端提交从来不是默认分支的祖先。检查该分支的 PR 是否确实已合并:

    gh pr view <branch-name> --json state,mergedAt
    
    • 如果 PR 状态为 MERGED,请先向用户确认,再使用 git branch -D <branch-name> 删除。
    • 否则,请交由用户处理,不要强制删除。

注意:

  • 软删除(安全删除,可防止删除未合并分支)时使用小写 -d
  • 除上述已验证的压缩合并情况外,绝不使用大写 -D(硬删除);即使符合该情况,也必须先得到用户确认
  • 此工作流会确保默认分支保持最新,然后再尝试删除

评论

支持 Markdown