我想在git别名中使用shell变量扩展来去除分支的前缀。不幸的是,当我使用“标准”别名时,不会进行变量扩展:
publish = push -u origin ${$(git symbolic-ref HEAD)##refs/heads/}
这是试图实际推送一个名为“$ {$(git”)的分支。但如果我将别名更改为:
publish = "!git push -u origin ${$(git symbolic-ref HEAD)##refs/heads/}"
它是通过sh运行而无法进行我想要的替换。有一些解决方法吗?
答案 0 :(得分:1)
尝试更改
!git push -u origin ${$(git symbolic-ref HEAD)##refs/heads/}
到
!git push -u origin `git symbolic-ref HEAD | sed -e "s#^refs/heads/##"`
这使用sh
反引号来执行命令,使用sed
来执行正则表达式替换。
答案 1 :(得分:1)
低级说明:${xxx}
语法始终需要xxx的变量名称。它不能替代任意字符串。要使用##,必须:x=$(git symbolic-ref HEAD); echo ${x##refs/heads/};