Um Befehle innerhalb eines git alias zu laufen, insbesondere Argumente auf diese Befehle zu übergeben, werden Sie wahrscheinlich haben eine temporäre Funktion erstellen, die Sie dann sofort aufrufen:
$ vim ~/.gitconfig
...
[alias]
# compare:
foo = "! echo begin arg=$1/$2/end"
foo2 = "!f() { echo "begin arg=$1/$2/end"; }; f"
in diesem Beispiel ist die Funktion wahrscheinlich das, was Sie brauchen (und ist auch flexibler, was Sie in einem einzigen „stat tun können "); und Sie können wahrscheinlich sagen, dass für beide Optionen die verbleibenden Argumente für den Git-Befehl einfach als Argumente an den Alias übergeben werden, unabhängig davon, ob es "echo" oder "f" ist; Aufruf der Funktion verbraucht einfach die args, zu ignorieren, was nicht explizit verwendet wird:
$ git foo a b c
begin arg=a/b/end a b c
$ git foo2 a b c
begin arg=a/b/end
Ein weiteres Beispiel (listet alle Aliase, bezogen auf passende Muster) (Anmerkung: Sie halten die gleiche Funktion Namen „f()“ im gesamten Wiederverwendung die .gitconfig):
[alias]
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
die ersten kehrt den Alias für nur "$ foo", die zweite für "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: die tatsächlichen Ergebnisse, basierend auf Shell variieren kann ; Ich benutze Dies mit Bash unter Linux, Unix & Cygwin (Windows).)
Das. Ist toll. Ich machte mir zunächst Sorgen, dass ich versehentlich etwas ausführen würde, da ich ein paar Shell-Skripte geschrieben habe, um git-Zeug zu machen, und ihnen das Präfix 'git-', Aber meine Shell (zsh) vervollständigt sie nicht, also müsste ich sie explizit eingeben. Und wenn ich Autocomplete-Verhalten haben möchte, kann ich einen Git-Alias für seinen eigenen Unterbefehl deklarieren, was auch eine Voraussetzung ist, dass ich die Verknüpfung von Skript zu Unterbefehl explizit mache. –
Yup, und es ist eine binäre Sie brauchen nur den Knall: '! binary' –