我通过shell传参的方式设置git别名为啥不管用?
我想设置一个查看分支的描述的命令,查找后,通过shell的方式设置,目前不报错,但是只是返回当前分支名,没有返回分支描述
git config --global alias.desc "! f() { if [ -z $1 ];then currBra=`git symbolic-ref -q --short HEAD`;else currBra=$1;fi;git config branch.$currBra.description; }; f "
有懂的大神帮忙看下哪出错了?
回复
1个回答

test
2024-07-16
solution
将双引号改成单引号。
git config --global alias.desc '! f() { if [ -z $1 ];then currBra=`git symbolic-ref -q --short HEAD`;else currBra=$1;fi;git config branch.$currBra.description; }; f '
原因
如果是双引号,因为你是在 shell 中执行的,$1
会被当成变量解析成字符串。
执行 git config --global alias.desc
查看,你会看到 $1
消失,得到的结果为:
! f() { if [ -z ];then currBra=developer;else currBra=;fi;git config branch..description; }; f
例如下面这段脚本,得到的结果为 v=123
:
v=123; echo "v=$v"
如果是以文件的方式配置就不会出现这个问题。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容