2

我已经配置了我的.bash_aliases喜欢:

alias gc="git checkout"
alias gcf="git flow feature checkout"
source ~/.git-completion.bash
__git_complete gc  _git_checkout
source ~/.git-flow-completion.bash
__git_complete gcf __git_flow_feature

但是当我尝试完成时,我应该选择checkout然后我可以选择我的分支:

$ gcf 
checkout   diff       help       publish    rebase     track      
delete     finish     list       pull       start      

$ gcf checkout a
a_branch1 a_branch2

当我写+acheckout时会自动选择我该怎么做gcfTAB

4

1 回答 1

3

我认为一种解决方案可能在于自定义 Git 别名完成

如果使用 form 的复杂别名!f() { ... }; f,可以使用 null 命令:作为函数体中的第一个命令来声明所需的完成样式。例如!f() { : git commit ; ... }; f将告诉完成使用提交完成。这也适用于 form 的别名!sh -c '...'。例如,!sh -c ': git commit ; ... '

所以你首先需要在你的.gitconfig:

[alias]
  ffc = "!ffc() { : git checkout ; git flow feature checkout $@ ; } && ffc"

然后将其链接到.bash_aliases

alias gcf="git ffc"

它未经测试,但我认为它会做你想要的。您可能会对别名中的间距有一些问题,这$@可能会根据用例修复。ffc\"$@\"

于 2016-11-28T09:07:00.220 回答