我想在〜/ .gitconfig中使用Git别名,以便它调用bash函数(如果已定义),否则调用常规git checkout
。
这就是我设计的:
cat ~/.gitconfig
...
[alias]
...
co = !(compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout
问题是Git使用/ bin / sh(在我的情况下恰好是dash
)并且它compgen
上的barf,因为它是bash
内置的。
确保Git使用bash
执行此命令的任何方式?
请注意,vxzExecuteGitCheckout()
是在〜/ .bashrc中未包含的文件中定义的。
另一个问题是,如果我使用git co -b param1 param2 ...
,如果找不到此Bash函数,上述别名定义是否会将-b param1 param2
传递给git checkout
?
答案 0 :(得分:2)
明确使用bash
:
co = !bash -c '( compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout' -
另一种可能性是使用正确的shebang行#!/bin/bash
编写一个shell脚本,并为alias.co
调用该脚本(请参阅问题How to embed bash script directly inside a git alias)