I\'d like to use a shell variable expansion inside of a git alias to strip a prefix of a branch. Unfortunately when I use the \"standard\" alias, variable expansion is not d
Low-level explanation: The ${xxx}
syntax always requires a variable name for xxx. It does not substitute an arbitrary string. To use ##, one would have to: x=$(git symbolic-ref HEAD); echo ${x##refs/heads/};
Try changing
!git push -u origin ${$(git symbolic-ref HEAD)##refs/heads/}
to
!git push -u origin `git symbolic-ref HEAD | sed -e "s#^refs/heads/##"`
This uses sh
backticks to execute commands and sed
to do the regular expression substitution.