使用shell变量扩展的Git别名

时间:2011-11-29 12:08:25

标签: git shell

我想在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运行而无法进行我想要的替换。有一些解决方法吗?

2 个答案:

答案 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/};