我有git
[alias]
review = !git stash && git fetch origin $1 && (git branch -m $1 tmp-review-$1-$(date +%Y-%m-%d-%H-%M-%S) || :) && git checkout -b $1 origin/$1 && :
您可以像git review <branch-name>
如何将已存在的分支自动填充功能挂钩到git review
我正在寻找类似的东西:
__git_complete gr _git_branch
但要根据参数完成 - &gt; git review <tab>
一般来说,有没有办法根据正则表达式或字符串匹配来挂钩bash自动完成?
对于git
,请参阅@ Timir的回复。
# add completion handler for 'review' command
_git_review ()
{
__git_complete_refs
}
一般情况下,您可以挂钩自己的自动完成功能,并调用默认值:
_tralala ()
{
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
if [ "$prev" = "test" ]; then
COMPREPLY=( $( compgen -W 'ninja pizza' -- "$cur" ) )
else
_git
fi
}
complete -F _tralala git
答案 0 :(得分:2)
只需在git-completion.bash
或.bash_profile
中定义以下功能。
# add completion handler for 'review' command
_git_review ()
{
__git_complete_refs
}
那将给你git review <tab>
自动完成功能。如果您还在寻找git <tab>
自动填充功能以包含您的别名,那么您还需要git-completion.bash
中的以下内容:
# add hook for further expansions
_git_known_expansions ()
{
# list aliases
echo $(git config --name-only --get-regexp alias | sed 's/alias\.//g')
}
# modify command list to include expansions
__git_commands () {
if test -n "${GIT_TESTING_COMMAND_COMPLETION:-}"
then
printf "%s" "${GIT_TESTING_COMMAND_COMPLETION}"
else
echo "$(git help -a|egrep '^ [a-zA-Z0-9]') $(_git_known_expansions)"
fi
}
希望这有帮助。