如何使用bash自动完成功能来处理使用shell命令的git别名?

时间:2014-06-19 21:21:15

标签: git bash shell

在我的git配置中,我有一个相对较长的别名,它以一种漂亮的格式输出最近的git提交日志:

lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'

我还有另一个别名,它基于前一个,通过在命令中添加--all选项。我不想通过在两个别名中指定整个命令字符串来重复自己,所以我只将新的别名shell发送到前一个:

la = !git lg --all

这很有效,但是有一个问题:虽然分支名称的自动完成与我的常规git lg别名一起工作正常,但对于那个发出的分支名称,它根本不起作用。

如何使git分支名称的自动完成与使用其他命令的别名一起工作?

注意:这个问题与How do I get bash completion to work with aliases?不同,因为该问题涉及git命令的bash别名,而不是git的内置别名系统。

1 个答案:

答案 0 :(得分:2)

在这种情况下,键入任何分支名称都会得到相同的结果,因为--all选项显示所有引用。但是,如果你添加

function _git_la() {
  _git_log
}

到你的shell启动文件,它应该正确自动完成。