如何使用Git别名启动Bash功能

时间:2011-06-26 10:43:33

标签: git alias built-in git-checkout bash-function

我想在〜/ .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

1 个答案:

答案 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