问题
I want to use a Git alias in ~/.gitconfig so that it calls a bash function, if it is defined, otherwise call the regular git checkout
.
This is what I have devised:
cat ~/.gitconfig
...
[alias]
...
co = !(compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout
The problem is that Git uses /bin/sh (which happens to be dash
in my case) and it barfs on compgen
since it is a bash
builtin.
Any way making sure that Git uses bash
to execute this command?
Note that vxzExecuteGitCheckout()
is defined in a file which is not included in ~/.bashrc, yet.
Another question is, if I were to use git co -b param1 param2 ...
, would the above alias definition pass on the -b param1 param2
to git checkout
if this Bash function is not found?
回答1:
use bash
explicitely:
co = !bash -c '( compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout' -
another possibility would be to write a shell script with the correct shebang line #!/bin/bash
and call that script for alias.co
(see the question How to embed bash script directly inside a git alias)
来源:https://stackoverflow.com/questions/6483443/how-to-launch-a-bash-function-using-git-alias