Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使git alias的bash完成工作?_Bash_Git_Bash Completion - Fatal编程技术网

如何使git alias的bash完成工作?

如何使git alias的bash完成工作?,bash,git,bash-completion,Bash,Git,Bash Completion,我创建git别名~/.gitconfig: [alias] xxx = !bash -c 'git rebase ...' 但是,当我在shell中键入git xxxTABTAB时,我得到的是当前目录中的文件列表,而不是git-rebaseTABTAB中可用的分支列表 是否有一种方法可以使git xxx的bash自动完成?与普通别名类似: __git_complete grb _git_rebase ~/.bashrc _git_xxx () { _git_rebase } ~/.gi

我创建git别名
~/.gitconfig

[alias]
xxx = !bash -c 'git rebase ...'
但是,当我在shell中键入
git xxx
TABTAB时,我得到的是当前目录中的文件列表,而不是
git-rebase
TABTAB中可用的分支列表

是否有一种方法可以使git xxx的bash自动完成?与普通别名类似:

__git_complete grb _git_rebase
~/.bashrc

_git_xxx ()
{
  _git_rebase
}
~/.gitconfig

[alias]
xxx = !bash -c 'git rebase ...'

例如,
\u git\u rebase
如下所示(在git-completion.bash中找到-此文件的路径取决于您的系统,请使用
查找
查找
,无论查找什么):

复制此函数,重命名为
\u git\u whatever
,例如,根据需要对其进行更改并将其放入
~/.bashrc
中,然后使用
\u git\u complete gwhat\u git\u whatever
从中生成别名

在没有
\uu git\u complete…
步骤的情况下,完成操作将在
git上进行

为了防止代码重复,可以将别名完成绑定到现有别名完成:

_git_xxx ()
{
  _git_rebase
}

你期望完成什么?要重设基础的文件列表、分支、提交列表?@bimlas:git-rebase的可用分支列表
TAB+TAB是否确实需要
bash
<代码>[alias]xxx=rebase…@chepner:例如。实际上,有一个多行脚本获取最新的脚本。它应该可以工作:@Eugen Konkov,很抱歉编辑,但我找到了真正的解决方案。
\u git\u xxx
真的很有效!把这个解决方案放在答案的前面值得吗?因此,其他人会发现,如何处理git别名也很容易:
merge pr
,似乎很难处理破折号
_git_xxx ()
{
  _git_rebase
}