我如何写一个 git 别名以字符串作为参数

How can I write a git alias that takes a string as an argument

我想为git写一个别名:

git log --all --grep='Big boi'

我目前拥有的是:

[alias]
    search = "!f() { str=${@}; echo $str; git log --all --grep=$str; }; f"

它完美地回显了字符串但给出了错误,我似乎无法弄清楚如何将字符串传递给 grep 标志。

$ user in ~/src/repo on master λ git search 'Big boi'
Big boi
fatal: ambiguous argument 'boi': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

如果有任何不同,我正在使用 zsh。 . .

如果您使用的是 double-quotes:

,则该别名似乎有效
git search "Big boi"

我还让它与 --grep=\"$str\" 一起使用(并且仍在使用 double-quotes)

OP joshuatvernon adds :

I amended it to

search = "!f() { str="$*"; echo "$str"; git log --all --grep=\"$str\"; }; f"

and it works with single, double or no quotes.