菜鸟笔记
提升您的技术认知

Git 搜索

1. 空间维度搜索,我们发现经常有需求是想找到某个函数在哪些文件里出现过。

git grep

在当前working directory下搜索含有某个字符串的文件,要显示行号可以使用-n参数。

# git grep -n hongchang

zhc.conf:1:hongchangfirst

只显示包含的文件和其包含的个数可以使用--count参数。

# git grep --count hongchang

zhc.conf:1

记住git grep搜索的区域是当前HEAD所生成的连通分量,还有working区和staging区。你也可以指定其他的节点所生成的连通分量,比如

git grep -n hongchangfirst 3b7d6a13083f9cd826a7963ec8ea2053e66d4bc7

2. 时间维度搜索,有时候我们还像知道某个变量是在哪一次提交引入的,可以使用log的-S参数。

git log -Shongchangfirst

这样就把所有修改它的commit列了出来,最开始的一个commit就是引入它的commit。

还可以使用-L参数告诉Git尝试匹配成函数,如:

git log -L :initialize_zhc_db:zhc_db.c

冒号中间的是你想查看的函数名,冒号后边的是限制在某个文件内的函数,这样Git会把关于这个函数的所有修改历史列出来。