git在zsh TAB补全中显示已删除的旧分支

8

如果这是一个重复问题,我很抱歉,但我不确定这是git的“特性”还是zsh的问题,但是如果我在命令行中按tab键,就会有大量已经被删除的分支显示出来。

输入图像描述

我已经尝试了prune,但它似乎没有做到我想要的。

我本地只有以下这些分支:

master
development
fix/root-cleanup

你有zsh框架吗,例如oh my zsh shell?如果有,你安装了一些git模块吗?我猜是的 - 这些都是缓存条目。 - gregory
我有 oh my zsh...这是一个很好的提示。它们把这些条目缓存到哪里了? - paulywill
2个回答

8
显然,自动完成选项卡显示了我没有进行过清理的远程分支的所有名称。
通过阅读这篇博客文章找到了线索。
我一直专注于本地,甚至没有考虑插件是否正在从远程分支中拉取。
令人沮丧的是,正如屏幕截图中所示,所有没有origin/的分支都不是本地的,也不在那里。当我开始删除远程分支时,这些分支也消失了。

1
也许安装一个像diazod/git-prune这样的 oh-my-zsh 插件会有帮助,可以应用各种git prune 别名。这反过来应该会大大减少分支数量。
请注意,从Git 2.28(2020年第三季度)开始,“git prune”已添加到完成列表中(在contrib/目录下),用户可以在命令行中输入该命令。请参见提交81120a9(由John Lin (johnlinp)于2020年6月22日提交)。(由Junio C Hamano -- gitster --于2020年7月6日合并至提交65ffaca

bash-completion:在 bash completion 中添加 git-prune

签名:John Lin

当存在太多无法访问的宽松对象时,git 有时会建议用户运行 git prune
如果我们将 git prune 添加到 bash completion 中,那么对用户更加友好。


启用了插件,但在我切换时并没有删除这些旧的已删除分支。 - paulywill
@paulywill,你启用了插件,但是你使用了它的别名吗? - VonC
抱歉...我正在查看您提供的源代码,但不是很理解。能否给出一个示例? - paulywill
@paulywill 我的意思是:你必须执行这些命令来删除过时的分支。至少要执行这个:https://github.com/diazod/git-prune/blob/458d7270270bfb376ee0a82e948db7410c4d5d73/git-prune.plugin.zsh#L6-L8。`__prune_local_branches`和`__print_remote_branches`。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接