配置 git 完成结账以仅显示本地分支?

gma*_*man 5 zsh git

我不确定 git 补全是在哪里实现的,但我在 MacOS 上运行 zsh 和 oh-my-zsh。如果我输入,git branch -v我会看到我有 4 个本地分支机构

\n
> git branch -v\n  dangling-pointer       ce141cd55 Metal: Fix dangling pointer in IntermRebuild\n* fix-occlusion-query-m1 67a147feb Metal: Fix Occlusion Query bug on M1\n  main                   93c0c90db Suppress the failing egl test to unblock roller\n  readpixel-speed-test   3ebef5614 Metal:Read Pixels Speed Test\n
Run Code Online (Sandbox Code Playgroud)\n

但如果我输入git checkout <tab>我会得到这个

\n
\xe2\x9d\xaf git checkout <tab>\nzsh: do you wish to see all 6036 possibilities (776 lines)? \n
Run Code Online (Sandbox Code Playgroud)\n

其他 6032 种可能性是标签和其他一些相关的东西,例如HEAD, FETCH_HEAD,ORIG_HEAD

\n

检查另一个仓库,只有一个分支

\n
\xe2\x9d\xaf git branch -v\n* master 8ce048a build\n
Run Code Online (Sandbox Code Playgroud)\n

但自动完成显示

\n
\xe2\x9d\xaf git checkout <tab>\nzsh: do you wish to see all 186 possibilities (34 lines)? \n
Run Code Online (Sandbox Code Playgroud)\n

如果我选择是的话

\n
\xe2\x9d\xaf git checkout\nFETCH_HEAD                                   fix-uniform-block-padding-issue              origin/dev                                   test                                       \nHEAD                                         lgtm-test                                    origin/fix-uniform-block-padding-issue       uniform-tree                               \nORIG_HEAD                                    master                                       origin/lgtm-test                             v4.21.2                                    \nallow-sharing-arrays                         origin/HEAD                                  origin/master                                v4.22.0                                    \ncap-sphere                                   origin/allow-sharing-arrays                  origin/test                                  v4.22.1                                    \ndev                                          origin/cap-sphere                            origin/uniform-tree                                                                     \nv0.0.1   v0.0.9   v0.0.17  v0.0.25  v0.0.34  v0.0.42  v1.5.1   v2.1.0   v2.6.1   v3.0.2   v3.4.1   v4.0.1   v4.5.1   v4.9.1   v4.11.2  v4.14.0  v4.17.0  v4.19.5                \nv0.0.2   v0.0.10  v0.0.18  v0.0.26  v0.0.35  v1.0.0   v1.5.2   v2.1.1   v2.6.2   v3.1.0   v3.5.0   v4.1.0   v4.5.2   v4.9.2   v4.11.3  v4.14.1  v4.18.0  v4.20.0                \nv0.0.3   v0.0.11  v0.0.19  v0.0.27  v0.0.36  v1.1.0   v1.6.0   v2.1.3   v2.7.0   v3.2.0   v3.6.0   v4.2.0   v4.6.0   v4.9.3   v4.11.4  v4.14.2  v4.18.1  v4.21.0                \nv0.0.4   v0.0.12  v0.0.20  v0.0.29  v0.0.37  v1.2.0   v1.6.1   v2.2.0   v2.8.0   v3.2.1   v3.7.0   v4.3.0   v4.7.0   v4.9.4   v4.11.5  v4.15.0  v4.19.0  v4.21.1                \nv0.0.5   v0.0.13  v0.0.21  v0.0.30  v0.0.38  v1.3.0   v1.7.0   v2.3.0   v2.8.1   v3.2.2   v3.7.1   v4.3.1   v4.8.0   v4.10.0  v4.12.0  v4.15.1  v4.19.1  v4.21.2                \nv0.0.6   v0.0.14  v0.0.22  v0.0.31  v0.0.39  v1.4.0   v1.7.1   v2.4.0   v2.8.2   v3.3.0   v3.8.0   v4.3.2   v4.8.1   v4.10.1  v4.12.1  v4.15.2  v4.19.2  v4.22.0                \nv0.0.7   v0.0.15  v0.0.23  v0.0.32  v0.0.40  v1.4.1   v1.8.0   v2.5.0   v3.0.0   v3.3.1   v3.8.1   v4.4.0   v4.8.2   v4.11.0  v4.13.0  v4.16.0  v4.19.3  v4.22.1                \nv0.0.8   v0.0.16  v0.0.24  v0.0.33  v0.0.41  v1.5.0   v1.9.0   v2.6.0   v3.0.1   v3.4.0   v4.0.0   v4.5.0   v4.9.0   v4.11.1  v4.13.1  v4.16.3  v4.19.4                       \n8ce048a  -- [HEAD]    build (4 days ago)\n5a4e7b5  -- [HEAD^]   bump to v4.22.1 (4 days ago)\n5c85f3a  -- [HEAD^^]  changelist (4 days ago)\n9a19a3f  -- [HEAD~3]  fixed missing return types in `vertex-arrays.js` (4 days ago)\n05807c5  -- [HEAD~4]  build (8 weeks ago)\nb35e44a  -- [HEAD~5]  bump to v4.22.0 (8 weeks ago)\n297e0d1  -- [HEAD~6]  add samples to AttachmentOptions (8 weeks ago)\naa7fe4a  -- [HEAD~7]  build (8 months ago)\na3cb143  -- [HEAD~8]  update docs (8 months ago)\n7944f37  -- [HEAD~9]  build (8 months ago)\n9850f58  -- [HEAD~10] typo (8 months ago)\nbf3b5c1  -- [HEAD~11] build (8 months ago)\n74eb006  -- [HEAD~12] typo (8 months ago)\n859ebd0  -- [HEAD~13] build (8 months ago)\n8718e95  -- [HEAD~14] typo (8 months ago)\n11d1c92  -- [HEAD~15] remove unused modules (8 months ago)\nf8141e9  -- [HEAD~16] move old tests to new test harness (8 months ago)\nb8a7b1a  -- [HEAD~17] build (8 months ago)\n190c144  -- [HEAD~18] bump to v4.21.2 (8 months ago)\n2a3aeff  -- [HEAD~19] fix for Safari's lack of lookbehind assertions (8 months ago)\n
Run Code Online (Sandbox Code Playgroud)\n

我不确定为什么它显示最后 20 次提交(或最后的任何内容)

\n

有没有办法配置 git 自动完成,使其只显示本地分支?因为它是补全对我来说几乎没有用,除非我已经知道分支名称,以便我可以输入一些字符并过滤补全。

\n

更新:

\n

有人建议--no-guess。这给出了一个较小的列表,但还不够小。

\n
\xe2\x9d\xaf git branch -v\n  backup-packpixels                           923bd8756 Metal:Speed up BGRA8 to RGBA8 copy for readPixels\n* buffersubdata-perf-test                     8b2807fc0 Metal: Use Vulkan style BufferSubData impl\n  check-cb-order                              7e92ef8aa Metal: Fix for not submitting command buffers in order\n  clear-surface                               924f6de7d Metal:Clear Backbuffer when Robust Resource Init enabled\n  main                                        29d18b303 [behind 39] Revert "Vulkan: Use VK_EXT_primitive_topology_list_restart"\n\n> git checkout <tab>\nzsh: do you wish to see all 6486 possibilities (2176 lines)? \n> git checkout --no-guess\nzsh: do you wish to see all 3298 possibilities (1113 lines)? \n
Run Code Online (Sandbox Code Playgroud)\n

仍然有 3294 个条目太多,git branch -v仅显示 4 个分支

\n
\xe2\x9d\xaf export GIT_COMPLETION_CHECKOUT_NO_GUESS=1\n\xe2\x9d\xaf git checkout \nzsh: do you wish to see all 6450 possibilities (6450 lines)? \n
Run Code Online (Sandbox Code Playgroud)\n

没有效果

\n

虽然我看到它被引用~/.oh-my-zsh/plugins/gitfast/git-completion.bash

\n

也没有

\n
__gitcomp_nl "$(__git_refs...\n
Run Code Online (Sandbox Code Playgroud)\n

在文件中git-completion.bash

\n

小智 0

简短而甜蜜的答案是,是的,有。

这篇博文提供了有关如何实现它的简单易懂的说明:https://cmetcalfe.ca/blog/git-checkout-autocomplete-local-branches-only.html

注意:在文章中,Carey 建议创建一个新的别名来检查本地分支,即checkoutr

我强烈建议遵循这种方法,因为有时您可能需要查看完整的选项列表 - 因此分离出命令是理想的选择。

另外,如果您使用brew在MacOS上安装git,那么您正在寻找的配置文件可能在这里:

$(brew --prefix)/etc/bash_completion.d/git-completion.bash
Run Code Online (Sandbox Code Playgroud)

如果您没有正确遵循此信息,请告诉我,我将进行更深入的研究。