Aby uruchamiać polecenia wewnątrz aliasu git, aw szczególności przekazywać argumenty do tych poleceń, prawdopodobnie będziesz musiał utworzyć tymczasową funkcję, którą następnie natychmiast wywołasz:
$ vim ~/.gitconfig
...
[alias]
foo = "! echo begin arg=$1/$2/end"
foo2 = "!f() { echo "begin arg=$1/$2/end"; }; f"
W tym przykładzie funkcja jest prawdopodobnie tym, czego potrzebujesz (a także jest bardziej elastyczna, jeśli chodzi o to, co możesz zrobić w pojedynczej „instrukcji”); i prawdopodobnie możesz powiedzieć, że dla obu opcji pozostałe argumenty polecenia git są po prostu przekazywane jako argumenty do aliasu, niezależnie od tego, czy jest to „echo”, czy „f”; wywołanie funkcji po prostu zużywa argumenty, ignorując to, co nie jest jawnie używane:
$ git foo a b c
begin arg=a/b/end a b c
$ git foo2 a b c
begin arg=a/b/end
Inny przykład (zawiera listę wszystkich aliasów na podstawie pasującego wzorca) (uwaga: możesz nadal używać tej samej nazwy funkcji „f ()” w całym pliku .gitconfig):
[alias]
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
Pierwsza zwraca alias dla samego „foo $”, a druga dla „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
(uwaga: rzeczywiste wyniki mogą się różnić w zależności od powłoki; używam tego z bash w systemie Linux, Unix i Cygwin (Windows).)