3

我想在 ~/.gitconfig 中使用 Git 别名,以便它调用 bash 函数(如果已定义),否则调用常规git checkout.

这是我设计的:

cat ~/.gitconfig
...
[alias]
...
    co = !(compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout

问题是 Git 使用 /bin/sh (恰好dash在我的情况下)并且它会compgen因为它是bash内置的而停止运行。

有什么方法可以确保 Gitbash用来执行这个命令?

请注意,它vxzExecuteGitCheckout()是在一个尚未包含在 ~/.bashrc 中的文件中定义的。

另一个问题是,如果我使用,如果找不到这个 Bash 函数git co -b param1 param2 ...,上面的别名定义会传递-b param1 param2给吗?git checkout

4

1 回答 1

4

bash明确使用:

co = !bash -c '( compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout' -

另一种可能性是使用正确的 shebang 行编写一个 shell 脚本#!/bin/bash并调用该脚本alias.co(请参阅问题How to embed bash script directly inside a git alias

于 2011-06-26T11:20:30.830 回答