Как избежать двойного ввода поискового запроса в этом однострочном (search for something
)?
git grep "search for something" $(git log -g --pretty=format:%h -S"search for something")
Мое решение:
Создать скрипт bash /usr/local/bin/git-search
:
search_string="$1"
git grep $search_string $(git log -g --pretty=format:%h -S$search_string)
Тогда я могу использовать:
git search 'search for something'
Вы можете поместить в файл следующее, а затем указать этот файл в своем ~/.bashrc
:
function gitgrep {
git grep "search for something" $(git log -g --pretty=format:%h -S"$1")
}
Чтобы получить его, у вас будет просто точка имени файла . file_with_function
Тогда вы бы:
gitgrep "foo bar baz"
(Требуются цитаты, можно поиграть с $@
вместо того $1
если вы не хотите использовать кавычки)
Вы можете сделать это как псевдоним:
alias youralias="git grep \"$0\" $(git log -g --pretty=format:%h -S\"$0\")"
А затем вызовите его из оболочки, например
youralias "search for something"
Это работает для вас?
другой вариант - использовать расширение истории bash:
git grep "search for something" $(git log -g --pretty=format:%h -S!#:2)
Хотя все это будет работать, если вы также хотите сократить свои базовые команды для git, просто создайте файл в ~/.gitconfig
и добавить псевдонимы. Например, вот некоторые из моих:
$ cat ~/.gitconfig
[alias]
ci = commit
co = checkout
f = fetch
s = status
b = branch
d = diff
a = add
l = log
g = grep
Итак, теперь вы можете выдать следующее:
git g "search for something" $(git l -g --pretty=format:%h -S"search for something")
ИЛИ вы все еще можете иметь псевдонимы git в вашем файле .gitconfig, но также включать другие функции bash, псевдонимы и т. Д., Которые были предложены в этом потоке.