bash - git 的最终别名失败(__git_aliases 命令似乎已被弃用)
问题描述
我正在尝试使用The Ultimate Git Alias Setup创建具有自动完成功能的 git 别名。我按照说明执行了所有操作,但是将以下内容放入我的 .zshrc 文件会导致错误:
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
function_exists() {
declare -f -F $1 > /dev/null
return $?
}
for al in `__git_aliases`; do
alias g$al="git $al"
complete_func=_git_$(__git_aliased_command $al)
function_exists $complete_fnc && __git_complete g$al $complete_func
done
错误不直观:.zshrc:153: parse error near
\n'`
但试图__git_aliases
在命令行中运行给出:zsh: command not found: __git_aliases
所以我认为这是问题所在。
然后我在网上发现这可能已被 git 弃用,并且该行应该给出相同的输出:
git config --global alias.aliases "config --get-regex 'alias*'"
,
但这没有用。
我也试过
git config --list | grep -oP '(?<=alias\.)\w+'
没有成功。
编辑:
尝试这个命令:
(git config -l | grep '^alias\.' | cut -d'=' -f1 | cut -d'.' -f2)
给了我别名列表,但只有别名。我仍然遇到同样的错误,所以我猜这里有两件事要解决,一件与 git 别名列表相关,另一件与 zsh 相关。
解决方案
当 cygwin 更新到 git 2.21.0 时,我遇到了同样的问题;这为我修复了它:
for al in $(git config --get-regexp '^alias\.' | cut -f 1 -d ' ' | cut -f 2 -d '.'); do
alias g${al}="git ${al}"
complete_func=_git_$(__git_aliased_command ${al})
function_exists ${complete_fnc} && __git_complete g${al} ${complete_func}
done
unset al
推荐阅读
- sql - 如何按一列分组并总结此分组列的结果
- regex - Dialogflow ES Regex 替代负前瞻
- javascript - javascript中嵌套异步调用的单元测试
- regex - 使用 sed 仅替换字符的单个实例
- python - 由于用户名,Python错误的文件路径来执行脚本
- javascript - 如何在 Discord.js 中处理带空格的参数
- python - Python Anywhere 找不到模块
- common-lisp - 通用 lisp 宏不调用函数
- php - “WISO mein Büro” API 不起作用,或者是我的错
- python - 从 slimxmpp 传递到 slixmpp AttributeError: '_asyncio.Future' 对象没有属性 'find_all'