关于 git-clean-gone-branches
用于查找远程跟踪分支已被删除的本地 Git 分支,并在确认后清理相关工作树和分支。适合整理仓库分支的开发者,流程会先列出待删除项并征求确认。
主要功能
- 01获取并修剪远程状态
- 02识别远程已删除的分支
- 03删除前展示清单并征求确认
- 04移除相关工作树并删除分支
适用场景
- 01清理远程已删除分支对应的本地分支
- 02删除分支前检查关联工作树
- 03整理长期开发后的本地仓库
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ everyinc/ compound-engineering-plugin --skill git-clean-gone-branches安装后在 Claude Code 中输入/git-clean-gone-branches确认已加载。
附带文件scripts/clean-gone
详细介绍
清理已消失的分支
删除远程跟踪分支已被删除的本地分支,包括所有关联的工作树。
工作流
步骤 1:发现已消失的分支
运行发现脚本,获取最新远程状态并识别已消失的分支:
bash scripts/clean-gone
脚本会先运行 git fetch --prune,然后解析 git branch -vv,查找标记为 : gone] 的分支。
如果脚本输出 __NONE__,则报告未找到过时分支,并停止。
步骤 2:列出分支并请求确认
向用户显示将要删除的分支列表。使用简单列表格式:
These local branches have been deleted from the remote:
- feature/old-thing
- bugfix/resolved-issue
- experiment/abandoned
Delete all of them? (y/n)
使用平台的提问工具等待用户答复(例如,Claude Code 中的 AskUserQuestion、Codex 中的 request_user_input、Gemini 中的 ask_user)。如果没有可用的提问工具,则显示列表并等待用户回复后再继续。
这是针对整个列表的“是”或“否”决定——不要提供多选或逐个分支选择。
步骤 3:删除已确认的分支
如果用户确认,则删除每个分支。对于每个分支:
- 检查是否有关联的工作树(
git worktree list | grep "\\[$branch\\]") - 如果存在工作树且它不是主仓库根目录,则先移除它:
git worktree remove --force "$worktree_path" - 删除分支:
git branch -D "$branch"
逐步报告结果:
Removed worktree: .worktrees/feature/old-thing
Deleted branch: feature/old-thing
Deleted branch: bugfix/resolved-issue
Deleted branch: experiment/abandoned
Cleaned up 3 branches.
如果用户拒绝,则表示已收到并停止,不删除任何内容。
评论
支持 Markdown