Git alias appending parameters to end

ekko2 is missing a single dash at the end:

[alias]
    ekko2 = !sh -c 'echo $1 && echo $1' -

See the Git Wiki on Advanced aliases with arguments:

[alias]
    example = !sh -c 'ls $2 $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.

Tags:

Git