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会把关于这个函数的所有修改历史列出来。