uruchamianie poleceń wewnątrz aliasu git, aw szczególności przekazywać argumenty do tych poleceń, będzie prawdopodobnie stworzyć tymczasową funkcję, która następnie niezwłocznie powołać:
$ vim ~/.gitconfig
...
[alias]
# compare:
foo = "! echo begin arg=$1/$2/end"
foo2 = "!f() { echo "begin arg=$1/$2/end"; }; f"
w tym przykładzie funkcja jest chyba to, co trzeba (i jest bardziej elastyczny, co można zrobić w jednym „stat ement "); 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"; powołując funkcja po prostu zużywa args, ignorując to, co nie jest wyraźnie stosowane:
$ git foo a b c
begin arg=a/b/end a b c
$ git foo2 a b c
begin arg=a/b/end
Innym przykładem (wymienia wszystkie pseudonimy, na podstawie dopasowywania wzoru) (uwaga: można zachować ponowne użycie tej samej nazwy funkcji „f()” w całym .gitconfig):
[alias]
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
pierwsze powroty alias tylko "foo $", drugi 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
(nb: rzeczywiste wyniki mogą się różnić w zależności od skorupy ; Używam to z bash na Linux, Unix & Cygwin (Windows).)
To. Jest super. Początkowo obawialiśmy się, że bym przypadkowo uruchomić coś, ponieważ pisałem kilka skrypt zrobić git rzeczy, i dał im przedrostek „git-”, Ale moja shell (zsh) nie je uzupełni, więc musiałem wpisać je jawnie. A jeśli chcę zachować autouzupełnianie, mogę zadeklarować alias git dla jego własnej podkomendy, co jest również wymogiem, że utworzę odnośnik ze skryptu do podkomendy jawnie. –
Yup, i jest to plik binarny, którego potrzebujesz po prostu huk: '! binary' –