1. 查找某个关键字(比如函数名):

$ git grep xmmap

config.c:               contents = xmmap(NULL, contents_sz, PROT_READ,
diff.c: s->data = xmmap(NULL, s->size, PROT_READ, MAP_PRIVATE, fd, );
git-compat-util.h: extern void *xmmap(void *start, size_t length, int prot, int fla
read-cache.c: mmap = xmmap(NULL, mmap_size, PROT_READ | PROT_WRITE, MAP_PRIVATE,
refs.c: log_mapped = xmmap(NULL, mapsz, PROT_READ, MAP_PRIVATE, logfd, );
sha1_file.c: map = xmmap(NULL, mapsz, PROT_READ, MAP_PRIVATE, fd, );
sha1_file.c: idx_map = xmmap(NULL, idx_size, PROT_READ, MAP_PRIVATE, fd, );
sha1_file.c: win->base = xmmap(NULL, win->len,
sha1_file.c: map = xmmap(NULL, *size, PROT_READ, MAP_PRIVATE, f
sha1_file.c: buf = xmmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, );
wrapper.c: void *xmmap(void *start, size_t length,

1.1 如果要显示行号,添加‘-n’选项:

$ git grep -n xmmap

config.c::          contents = xmmap(NULL, contents_sz, PROT_READ,
diff.c:: s->data = xmmap(NULL, s->size, PROT_READ, MAP_PRIVATE, fd,
git-compat-util.h:: extern void *xmmap(void *start, size_t length, int prot, int
read-cache.c:: mmap = xmmap(NULL, mmap_size, PROT_READ | PROT_WRITE, MAP_
refs.c:: log_mapped = xmmap(NULL, mapsz, PROT_READ, MAP_PRIVATE, logfd, );
sha1_file.c:: map = xmmap(NULL, mapsz, PROT_READ, MAP_PRIVATE, fd, );
sha1_file.c:: idx_map = xmmap(NULL, idx_size, PROT_READ, MAP_PRIVATE, fd
sha1_file.c:: win->base = xmmap(NULL, win->len,
sha1_file.c:: map = xmmap(NULL, *size, PROT_READ, MAP_PR
sha1_file.c:: buf = xmmap(NULL, size, PROT_READ, MAP_PRIVATE, fd
wrapper.c:: void *xmmap(void *start, size_t length,

1.2 如果只显示文件名,添加‘--name-only’选项:

$ git grep --name-only xmmap

config.c
diff.c
git-compat-util.h
read-cache.c
refs.c
sha1_file.c
wrapper.c

1.3 统计每个文件里有多少行匹配内容,添加‘-c’选项:

$ git grep -c xmmap

config.c:
diff.c:
git-compat-util.h:
read-cache.c:
refs.c:
sha1_file.c:
wrapper.c:

1.4 查找git仓库里某个特定版本里的内容,添加tag名或sha号:

$ git grep xmmap v1.5.0

v1.5.0:config.c:                contents = xmmap(NULL, st.st_size, PROT_READ,
v1.5.0:diff.c: s->data = xmmap(NULL, s->size, PROT_READ, MAP_PRIVATE, fd,
v1.5.0:git-compat-util.h:static inline void *xmmap(void *start, size_t length,
v1.5.0:read-cache.c: cache_mmap = xmmap(NULL, cache_mmap_size,
v1.5.0:refs.c: log_mapped = xmmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, logfd
v1.5.0:sha1_file.c: map = xmmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd,
v1.5.0:sha1_file.c: idx_map = xmmap(NULL, idx_size, PROT_READ, MAP_PRIVATE, fd
v1.5.0:sha1_file.c: win->base = xmmap(NULL, win->len,
v1.5.0:sha1_file.c: map = xmmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd,
v1.5.0:sha1_file.c: buf = xmmap(NULL, size, PROT_READ, MAP_PRIVATE, fd

1.5 查找git仓库里某个特定版本、特定文件里的内容(省略版本,默认当前版本),添加tag名或sha号、文件名:

$ git grep xmmap v1.5.0 diff.c

v1.5.0:diff.c:          s->data = xmmap(NULL, s->size, PROT_READ, MAP_PRIVATE, fd,

2. 某些关键字的逻辑组合

2.1 与逻辑:某一行既包括...又包括...

------------------->$ git grep -e 'pu' --and -e 'lic'
a.txt:public
c.txt:public
c.txt:public

2.2 或逻辑:某一行包括...或者包括...

------------------->$ git grep -e 'public' --or -e 'void'
a.txt:public
a.txt:void
b.txt:void
c.txt:public
c.txt:public

--or 是默认行为,如果省略:

------------------->$ git grep -e 'public' --or -e 'void'
a.txt:public
a.txt:void
b.txt:void
c.txt:public
c.txt:public ------------------->$ git grep -e 'public' -e 'void'
a.txt:public
a.txt:void
b.txt:void
c.txt:public
c.txt:public

2.3 非逻辑:某一行不包括...

------------------->$ git grep --not -e 'public'
a.txt:ab
a.txt:bc
a.txt:void
b.txt:void
b.txt:aaa
b.txt:bbb
c.txt:kkkk
c.txt:sfs
c.txt:l

2.4 组合逻辑:与或非的组合(为测试组合逻辑,又在库中新添加了d.txt文件)

------------------->$ git grep -e 'public' --and \( -e 'void' -e 'return' \)
d.txt:public void int save
d.txt:public void string save
d.txt:public return a ------------------->$ git grep -e 'public' --and \( -e 'void' --or -e 'return' \)
d.txt:public void int save
d.txt:public void string save
d.txt:public return a ------------------->$ git grep -e 'public' --and \( -e 'void' --and -e 'int' \)
d.txt:public void int save ------------------->$ git grep -e 'public' --and \( --not -e 'int' \)
a.txt:public
c.txt:public
c.txt:public
d.txt:public void string save
d.txt:public return a

2.5 全匹配:某一文件既包含...又包含...

------------------->$ git grep --all-match -e 'public' -e 'void'
a.txt:public
a.txt:void
d.txt:public void int save
d.txt:public void string save
d.txt:public return a

2.6 以上各个命令还可以加‘-n'、’-c‘、’--name-only‘、版本、文件等限制

2.7 查找某个字符串在何时添加

git log -S"string wanted to search" --oneline
81fbf7e a commit

git搜索--grep的更多相关文章

  1. 关于echo `git branch | grep \*`

    本来想返回一个git当前的分支.但会将这个文件夹下的所有目录与分支一起输出. 原因是  echo `git branch | grep \*`  等价于   echo * master  , 而  e ...

  2. 使用git grep进行git搜索

    1.git grep foo 会自动map所有包含foo的文件 2.git grep -n foo  显示行号 3.git grep --name-only foo 只显示文件名 4.git grep ...

  3. Linux编程 8 (挂载mount,查看磁盘df du,搜索grep,压缩zgip,归档tar)

    一. 挂载存储媒体 linux文件系统将所有的磁盘都并入一个虚拟目录下,当使用新的存储媒体之前,需要把它放到虚拟目录下,这项工作称为挂载(mounting) 1.1 mount 命令 在linux上用 ...

  4. CentOS 文本搜索grep

    grep 用于在文本中执行关键词搜索, 用法: grep [选项]... PATTERN [FILE]... [root@bigdata-senior01 ~]# grep "ftp&quo ...

  5. 文本搜索grep知识点总结

    文本搜索工具:grep, egrep     根据用户指定的模式对目标文件进行过滤,显示被模式匹配到的行     grep [OPTION]... 'PATTERN' FILE...          ...

  6. grep搜索文本

    正则匹配: grep -E "[a-z]+" 只输出匹配到的文本: echo this is a line. | grep -o -E "[a-z]+\." 统 ...

  7. grep文本搜索工具详解

    ############grep命令############这个命令属于文本处理三大命令之一,强大的文本搜索工具(贪婪模式)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达 ...

  8. 25个 Git 进阶技巧

    [ 原文] http://www.open-open.com/lib/view/open1431331496857.html 我已经使用git差不多18个月了,觉得自己对它应该已经非常了解.然后来自G ...

  9. git log命令全解析,打log还能这么随心所欲!

    git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! ...

随机推荐

  1. Python ---------copy

    copy---探索 1.浅copy    就相当于把变量指针指向对象 相当于给对象从新起了个小名 a=[[1,2],3,4] a=[[1,2],3,4] b=a.copy() # print(a) # ...

  2. cuda8.0环境下安装py-faster-rcnn问题总结

    首先声明,由于之前安装的cuda8.0,在实践中出现各种问题,这里不是指安装环境问题,而是在训练模型是会阻止内核启动,因此让我不得不转战8.0,说出来都是泪啊,配个环境都配了一个礼拜了,所以,请不要轻 ...

  3. android 实现透明状态栏

    主要使用https://github.com/jgilfelt/SystemBarTint这个开源库 1 ,导入SystemBarTintManager类 2 ,BaseFragmentActivit ...

  4. Recover the String

    Recover the String 题目链接:http://codeforces.com/contest/709/problem/D 构造 这题乍一看很难构造,但是如果知道了整个字符串中'0'和'1 ...

  5. 浅谈MAIC 2016第二届移动应用(APP)创新大会

    MAIC 2016第二届移动应用(APP)创新大会将于2016年12月在上海举办!MAIC一届比一届办的有质量,规模越大.今年也如约而至,预计今年MAIC规模逾2000人.大会以专业会议,创新应用展览 ...

  6. 如何解决两个li之间的缝隙

    如何解决两个li之间的缝隙的问题: 在做一个类似按钮左右滑动的选择器的动效,遇到了个是关于li之间的缝隙的问题: HTML如下: <span class="c1mChanger&quo ...

  7. INSTALL_FAILED_NO_MATCHING_ABIS

    在运行写好的cocos的demo时候,安装出现以下问题: 后来发现是因为自己用cygwin生成的x86的.so文件跟自己的魅族3机器CPU不适配!!! 参考:http://stackoverflow. ...

  8. deque (STL)

    //双端队列 //deque的成员函数 c.assign(beg, end); //将[beg, end]区间中的数据赋值给c c.assign(n, elem); //将n个elem的拷贝赋值给c ...

  9. ElasticSearch基础(4)-索引

    一.ES API常用规则 ES支持以Http协议的方式提供REST服务,以JSON格式发送请求返回响应. ES提供了大量的不管的数据操作,运维管理API,大量的api 这海量的api有一些通用的功能特 ...

  10. storm配置

    配置 Storm 有大量配置项用于调整 nimbus.supervisors 和拓扑的行为.有些配置项是系统级的配置项,在拓扑中不能修改,另外一些配置项则是可以在拓扑中修改的. 每一个配置项都在 St ...