如何避免在此一行代码(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'
答案1
您可以将以下内容放入一个文件中,然后在您的文件中获取该文件~/.bashrc
:
function gitgrep {
git grep "search for something" $(git log -g --pretty=format:%h -S"$1")
}
要获取它你只需要有句点文件名. file_with_function
然后你会:
gitgrep "foo bar baz"
(需要引号,如果不想使用引号,可以使用$@
代替)$1
答案2
您可以将其设为别名:
alias youralias="git grep \"$0\" $(git log -g --pretty=format:%h -S\"$0\")"
然后从 shell 中调用它
youralias "search for something"
那对你有用吗?
答案3
另一个选择是使用 bash 历史扩展:
git grep "search for something" $(git log -g --pretty=format:%h -S!#:2)
答案4
虽然所有这些都可以工作,但如果您还想缩短 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")
或者您仍然可以在 .gitconfig 文件中拥有 git 别名,但也可以合并本线程中提出的其他人的 bash 函数、别名等。