首先我输入git stash show
。
然后输入 s 和标签,它会显示git stash show stash@{
,直到现在它才能正常工作。
但是在输入 1 和 tab 之后,它就成了git stash show stashstash@{1}
,这显然是错误的。
我认为 .git-completion.bash 中的以下代码可能存在一些错误,但我几乎无法理解。
_git_stash ()
{
local save_opts='--keep-index --no-keep-index --quiet --patch'
local subcommands='save list show apply clear drop pop create branch'
local subcommand="$(__git_find_on_cmdline "$subcommands")"
if [ -z "$subcommand" ]; then
case "$cur" in
--*)
__gitcomp "$save_opts"
;;
*)
if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then
__gitcomp "$subcommands"
else
COMPREPLY=()
fi
;;
esac
else
case "$subcommand,$cur" in
save,--*)
__gitcomp "$save_opts"
;;
apply,--*|pop,--*)
__gitcomp "--index --quiet"
;;
show,--*|drop,--*|branch,--*)
COMPREPLY=()
;;
show,*|apply,*|drop,*|pop,*|branch,*)
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
| sed -n -e 's/:.*//p')"
;;
*)
COMPREPLY=()
;;
esac
fi
}
有谁知道如何修复它?
Bash版本:GNU bash,版本4.2.37(2)-release(i386-apple-darwin12.0.0)。
git版本:1.8.0.3
答案 0 :(得分:0)
Bash-Completion应该作为一个单独的包,或多或少独立于Bash本身。例如,我有来自Cygwin的bash版本4.1.10-4和bash-completion版本1.3-1,你描述的完成工作应该如此。
请检查您安装的Bash-Completion版本。您也可以尝试直接从http://bash-completion.alioth.debian.org/安装最新版本,或尝试仅使用上游版本替换文件/etc/bash_completion.d/git
。
答案 1 :(得分:0)
当我手动下载过时的git完成脚本时,我遇到了同样的问题。我能够通过使用自制软件来获取最新信息。
brew install git bash-completion
删除“.profile”中可能包含的旧链接。替换为使用brew
中的脚本if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
现在当我选中时,它正确完成。 (git stash show stash @ {0 ..给git stash show stash @ {0})