mcpField
G
git-clean-gone-branches

git-clean-gone-branches

github.com/everyinc开发25.8k231 次安装今天更新
代码仓库

关于 git-clean-gone-branches

用于查找远程跟踪分支已被删除的本地 Git 分支,并在确认后清理相关工作树和分支。适合整理仓库分支的开发者,流程会先列出待删除项并征求确认。

主要功能

  1. 01获取并修剪远程状态
  2. 02识别远程已删除的分支
  3. 03删除前展示清单并征求确认
  4. 04移除相关工作树并删除分支

适用场景

  1. 01清理远程已删除分支对应的本地分支
  2. 02删除分支前检查关联工作树
  3. 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

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:删除已确认的分支

如果用户确认,则删除每个分支。对于每个分支:

  1. 检查是否有关联的工作树(git worktree list | grep "\\[$branch\\]")
  2. 如果存在工作树且它不是主仓库根目录,则先移除它:git worktree remove --force "$worktree_path"
  3. 删除分支: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