Hav*_*veF 13 git bash shell alias msysgit
我知道Git别名可以与参数Git Faq部分" Git Aliases with argument"一起使用.
但今天我遇到了一个错误.
举一个不适合实际使用的简单示例.如果我这样做一个别名:
[alias]
lo = "!sh -c 'git log $1' -"
Run Code Online (Sandbox Code Playgroud)
然后我可以用
git lo file_a
Run Code Online (Sandbox Code Playgroud)
查看file_a的日志.
但是当我使用"tab"自动完成路径时,会发生以下错误.
git lo [tab]
Run Code Online (Sandbox Code Playgroud)
错误消息:
sh: declare: `_git_{': not a valid identifier
Run Code Online (Sandbox Code Playgroud)
这似乎是git-completion.bash中的一个错误.但我找不到`_git_ {'的位置!
另外我发现在错误消息中,_git_ {周围的引号标记似乎很奇怪.
BTW,我的msysgit版本是1.7.6-preview20110708
加:
另一个奇怪的是,我搜索了Git目录下的所有文件,发现没有文件包含字符串_git_ {.
我猜想为 git 设置了一个自定义完成功能,错误就在该设置中。首先尝试删除自定义完成并查看错误是否消失:
complete -r git
Run Code Online (Sandbox Code Playgroud)
旁注:对于 git 别名中具有可重用参数的 shell 命令,现代习惯用法是定义一个 shell 函数,它允许您使用标准 shell 参数处理,并且与 'sh -c 相比,要处理的参数引用级别要少。 ':
[alias]
plush = "!f() { git pull \"$@\" && git push \"$@\" }; f"
Run Code Online (Sandbox Code Playgroud)