Как я могу написать псевдоним 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, если это имеет значение.,,

1 ответ

Решение

Этот псевдоним, кажется, работает, если вы используете двойные кавычки:

git search "Big boi"

Я также заставил это работать с --grep=\"$str\" (и все еще используя двойные кавычки)

joshuatvernon добавляет в комментариях:

Я исправил это

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

и это работает с одинарными, двойными или без кавычек.

Другие вопросы по тегам