Pour exécuter des commandes à l'intérieur d'un alias git, et en particulier pour passer des arguments à ces commandes, vous aurez probablement à créer un temporaire de la fonction qui permet ensuite de faire valoir immédiatement:
$ vim ~/.gitconfig
...
[alias]
# compare:
foo = "! echo begin arg=$1/$2/end"
foo2 = "!f() { echo "begin arg=$1/$2/end"; }; f"
Dans cet exemple, la fonction est probablement ce dont vous avez besoin (et qui est également plus souple que ce que vous pouvez faire dans une simple "déclaration"); et vous pouvez sans doute dire que, pour les deux options, les autres arguments de la commande git sont simplement passés comme arguments pour l'alias, peu importe si c'est "echo" ou "f"; l'invocation de la fonction simplement consomme le args, ignorant ce qui n'est pas explicitement utilisé:
$ git foo a b c
begin arg=a/b/end a b c
$ git foo2 a b c
begin arg=a/b/end
Autre exemple, les listes de tous les alias, basée sur la correspondance de motif) (remarque: vous pouvez réutiliser le même nom de fonction "f()" tout au long de l' .gitconfig):
[alias]
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
La première renvoie le nom d'alias de juste "foo$", le deuxième "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: les résultats réels peuvent varier en fonction de la coque; je suis en utilisant ce avec bash sous Linux, Unix et Cygwin (Windows).)