I\'m using Git Bash v1.8.1, with a few aliases (for testing):
[alias]
ekko = !echo $1 && echo $1
ekko2 = !sh -c \'echo $1 && echo $1\'
Your ekko2
alias is really close... What you really want is this:
[alias]
ekko2 = !sh -c 'echo $1 && echo $1' -
Git aliases that execute shell commands do substitute the $n
variables, but they also append any arguments you pass them to the end of the command. So in your first example git ekko master
is equivalent to echo master && echo master master
, which explains its output.
Your second example is closer, but you're passing "master" to the sh
command, which is just ignoring the extra argument. By adding -
to the end of the alias, you're telling sh
that the arguments that follow are intended for the script sh
is executing, and not for sh
itself.