Git自动完成行为异常

我看到git alias是很奇怪的东西。使用Tab键获取自动完成的git命令时,出现bash错误。例如,如果我键入git pu以查看所有选项,则会发生这种情况:

$ git pu-bash: remote: command not found
-bash: -v: command not found
-bash: command substitution: line -327: syntax error near unexpected token `|'
-bash: command substitution: line -327: `| '
-bash: usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]: command not found
-bash: rev-parse: command not found
-bash: usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]: command not found
-bash: usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]: command not found
-bash: brname: command not found
-bash: brname: command not found
-bash: brname-trimmed: command not found
-bash: brname-trimmed: command not found
-bash: ls-files: command not found
-bash: @{u}: command not found

终端将几行卡在上面的输出中,并且^C多次打印了所有错误行之后。

我不确定错误指向哪个文件的行号,即我在alias中的~/.gitconfig在行174处结束。我注释掉了任何在错误中具有其名称的别名列表(例如brname)或使用列出的git命令(例如内置rev-parse出现错误)。直到错误消息消失并且自动完成再次开始工作为止。

现在,如果我输入git pu并按Tab键,我会处于以下状态:

$ git pu
pull   pull   push   push  

请注意,此处的响应加倍,对于其他任何输入,请按Tab键。

我注释掉以获得良好状态的别名之一是:

brname-trimmed = !git rev-parse --abbrev-ref HEAD | tr -d '\n'

假设我在标签T1上

  1. 如果我打开新标签页T2,取消注释T1上的别名,然后保存文件,则可以使用git自动完成,而在T2上没有任何问题。
  2. 如果取消注释别名,请保存文件,然后打开一个新标签T2并在T2上键入git pu,我看到:
$ git pu-bash: : command not found
-bash: command substitution: line -166: syntax error near unexpected token `&&'
-bash: command substitution: line -166: `&& '

我的~/.gitconfig的第166行既没有:也没有&&,甚至被注释掉了。

  1. 如果我取消注释别名,然后将其更改为xbrname-trimmed(只需在开头添加x,所以它是一个不同的单词),则无论T2何时打开,自动补全效果都很好。

我正在使用几个月未完成开发工作的机器,因此不确定何时发生此问题。 git版本是2.22.0

fang567 回答:Git自动完成行为异常

首先检查问题是否仍然存在于Git 2.24上,考虑到2.23和2.24已在完成脚本上工作。

还要检查您的Git bash completion is correctly installed

我添加了in the comments

您的.bashrc/.profile可能有某种错误,该错误会在运行该完成bash脚本时显示出来。
您需要使用.bashrc/.profile的内容(几乎为空)(至少要定义$PATH除外)进行测试(“空”)

OP alamoot确认:

  

打个招呼!
  在我的~/.bash_profile中,我正在调用一个脚本,该脚本设置了自定义$BASH_COMPLETION$BASH_COMPLETION_DIR
  这个自定义脚本是旧的“系统设置”的一部分,我不再需要了。
  所以把它取出来,我又重新完成了git。

本文链接:https://www.f2er.com/3148039.html

大家都在问