Для запуску команд усередині git-псевдоніма і, зокрема, для передачі аргументів цим командам, вам, швидше за все, доведеться створити тимчасову функцію, яку ви негайно викликаєте:
$ vim ~/.gitconfig
...
[alias]
foo = "! echo begin arg=$1/$2/end"
foo2 = "!f() { echo "begin arg=$1/$2/end"; }; f"
У цьому прикладі функція - це, мабуть, те, що вам потрібно (і вона також більш гнучка щодо того, що ви можете зробити в одному "виписці"); і ви, мабуть, можете сказати, що для обох варіантів решта аргументів до команди git просто передаються як аргументи до псевдоніма, незалежно від того, "echo" це або "f"; виклик функції просто споживає аргументи, ігноруючи те, що явно не використовується:
$ git foo a b c
begin arg=a/b/end a b c
$ git foo2 a b c
begin arg=a/b/end
Інший приклад (перераховані всі псевдоніми на основі відповідного шаблону) (примітка: ви можете продовжувати повторно використовувати одне і те ж ім'я функції "f ()" у всьому .gitconfig):
[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: фактичні результати можуть відрізнятися залежно від оболонки; я використовую це з bash на Linux, Unix та Cygwin (Windows).)