不完全确定如何表达问题,但Mercurial有一个功能我非常喜欢当你指定命令的一部分时,它足够聪明地识别你的意思。例如:hg sta
将扩展为hg status
。
有没有办法在Git中获得等效行为,以便(例如)git sta
会自动扩展为git status
?
编辑:澄清:我知道你可以用Git标签完成。我也知道你可以创建别名来缩短命令。我想要的就像是Mercurial,如果你没有选项卡完成它会在可能的情况下推断命令。例如:
git stas
然后输入git stash
执行。
答案 0 :(得分:1)
这个Mercurial功能非常方便,因为它确切地知道字母数量是否足够,所以当命令不明确时。它还为您提供了可能性列表。
这就是说,git中不存在这个特性,并且它似乎需要提供与shell相关的完成,如上所述。如果你想与git开发人员讨论这个问题,你仍然可以在http://www.mail-archive.com/git@vger.kernel.org/邮件列表上提出增强请求(或者如果已经被询问过,请查看之前)。
答案 1 :(得分:0)
只需将this脚本放到〜/ .git-completion.bash
即可并将此行添加到〜/ .bashrc
中#added by KES
export LESS="-RFXS -x4"
export TZ='Europe/Zaporozhye'
#Turn off wired ~
printf "\e[?2004l"
if [ -z "$SSH_CLIENT" ]; then
export EDITOR="subl"
else
export EDITOR="rsub --port 52697"
export RMATE_PORT="52697"
fi
alias gn="git-number"
alias ge="gn -c $EDITOR"
alias ga="gn add"
alias gap="EDITOR='$EDITOR -w' gn add -p"
alias gd="gn -c git diff -b -w --ignore-blank-lines"
alias gds="gd --staged"
alias gc="gn -c git checkout"
alias gcf="git flow feature checkout"
alias gl="gn -c git log -w -b -p --ignore-blank-lines"
alias gls="git log --stat"
alias cm="EDITOR='$EDITOR -w' git commit"
gcd() {
test -n "$1" && cd $(dirname $(git list $1))
}
source ~/.git-completion.bash
__git_complete gn _git
__git_complete ga _git_add
__git_complete gap _git_add
__git_complete gd _git_diff
__git_complete gds _git_diff
__git_complete gc _git_checkout
__git_complete gcf _git_checkout
__git_complete gl _git_log
__git_complete gls _git_log
__git_complete cm _git_commit
#added by KES
您只需要source ~/.git-completion.bash
但为方便起见,我会稍微使用
注意:git sta
的一个标签不起作用,因为有更多的完成次数:
$ git sta
stage stash status
尝试按两次 TAB ,或git stat
+ TAB