要在git别名中运行命令,尤其是将参数传递给这些命令,您可能必须创建一个临时函数,然后立即调用该函数:
$ vim ~/.gitconfig
...
[alias]
foo = "! echo begin arg=$1/$2/end"
foo2 = "!f() { echo "begin arg=$1/$2/end"; }; f"
在此示例中,该功能可能就是您所需要的(并且在单个“语句”中可以执行的操作也更加灵活);并且您可能会发现,对于这两个选项,git命令中其余的args都将作为args传递给别名,无论它是“ echo”还是“ f”;调用该函数只会消耗args,而忽略未明确使用的参数:
$ git foo a b c
begin arg=a/b/end a b c
$ git foo2 a b c
begin arg=a/b/end
另一个示例(根据匹配模式列出所有别名)(注意:您可以在整个.gitconfig中重复使用相同的函数名称“ f()”):
[alias]
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
第一个返回的别名仅为“ foo $”,第二个返回的别名为“ foo。*”:
$ git alias foo
alias.foo ! echo begin arg=$1/$2/end
$ git alias 'foo.*'
alias.foo ! echo begin arg=$1/$2/end
alias.foo2 !f() { echo begin arg=$1/$2/end; }; f
(nb:实际结果可能因外壳而异;我在Linux,Unix和Cygwin(Windows)上将它与bash一起使用。)