如何编写将字符串作为参数的 git 别名



我想为以下对象编写一个 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 如果它有任何区别......

如果您使用双引号,该别名似乎有效:

git search "Big boi"

我还让它与--grep="$str"一起使用(并且仍然使用双引号(

OP joshuatvernon在评论中补充说:

我将其修改为

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

它适用于单引号、双引号或无引号。

最新更新