将git的自动完成功能扩展到管道命令

时间:2014-11-07 09:32:59

标签: git autocomplete git-plumbing

作为this question的后续,我问自己是否有可能告诉git为其他命令提供自动完成功能(分支等),特别是像update-ref这样的管道命令。

尽管update-ref提供的灵活性比branch -f更高,但使用起来非常麻烦,因为您始终必须输入完整的引用名称。这反过来又不会让我想要使用它。

有关于此的任何想法吗?

1 个答案:

答案 0 :(得分:5)

可以启用管道命令,但您需要自己提供一些实现。

找到您正在使用的git-completion.sh脚本。

/users/andrewc/.bashrc我有

# GIT STUFF 
if [ -f ~/.git-completion.bash ] 
then
    . ~/.git-completion.bash 
fi

所以我拉起/users/andrewc/git-completion.bash

找到函数__git_list_porcelain_command())并注释掉update-ref

的行
        #update-ref)       : plumbing;;

这样,update-ref本身就可以自动完成。该脚本不知道如何填充update-ref的任何args。您似乎需要为__git_update_ref提供实现以实现此目的。我会使用类似的命令(可能是`__git_branch)作为模板并从那里开始。