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

$ git grep xmmapconfig.c:               contents = xmmap(NULL, contents_sz, PROT_READ,
diff.c:                 s->data = xmmap(NULL, s->size, PROT_READ, MAP_PRIVATE, fd, 0);
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, 0);
sha1_file.c:             map = xmmap(NULL, mapsz, PROT_READ, MAP_PRIVATE, fd, 0);
sha1_file.c:               idx_map = xmmap(NULL, idx_size, PROT_READ, MAP_PRIVATE, fd, 0);
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, 0);
wrapper.c:             void *xmmap(void *start, size_t length,

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

$ git grep -n xmmapconfig.c:1016:          contents = xmmap(NULL, contents_sz, PROT_READ,
diff.c:1833:                 s->data = xmmap(NULL, s->size, PROT_READ, MAP_PRIVATE, fd,
git-compat-util.h:291:     extern void *xmmap(void *start, size_t length, int prot, int
read-cache.c:1178:      mmap = xmmap(NULL, mmap_size, PROT_READ | PROT_WRITE, MAP_
refs.c:1345:          log_mapped = xmmap(NULL, mapsz, PROT_READ, MAP_PRIVATE, logfd, 0);
sha1_file.c:377:        map = xmmap(NULL, mapsz, PROT_READ, MAP_PRIVATE, fd, 0);
sha1_file.c:479:        idx_map = xmmap(NULL, idx_size, PROT_READ, MAP_PRIVATE, fd
sha1_file.c:780:                        win->base = xmmap(NULL, win->len,
sha1_file.c:1076:                       map = xmmap(NULL, *size, PROT_READ, MAP_PR
sha1_file.c:2393:               buf = xmmap(NULL, size, PROT_READ, MAP_PRIVATE, fd
wrapper.c:89:           void *xmmap(void *start, size_t length,

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

$ git grep --name-only xmmapconfig.c
diff.c
git-compat-util.h
read-cache.c
refs.c
sha1_file.c
wrapper.c

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

$ git grep -c xmmapconfig.c:1
diff.c:1
git-compat-util.h:1
read-cache.c:1
refs.c:1
sha1_file.c:5
wrapper.c:1

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

$ git grep xmmap v1.5.0v1.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.cv1.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

转载于:https://www.cnblogs.com/drizzlewithwind/p/5728761.html

git搜索--grep相关推荐

  1. linux 文件搜索 grep locate find

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  2. python grep 列表_关于python:跨多个文档的字符串搜索 – grep?

    如果给出文档列表,文档中包含字符串,您如何进行搜索并从文档中搜索并返回包含您要搜索的字符串的文档列表? 对于此问题陈述,我如何在Python或C中实现程序? 我考虑过grep,但我不确定如何实现原生P ...

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

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

  4. 伤寒论文本搜索(grep)

    微信公众号:rose1986 git@github.com:roses19860321/Treatise-on-Febrile-Caused-by-Cold.git https://github.co ...

  5. php grepmatch,linux最快的文本搜索神器ripgrep(grep的最好代替者)

    前言 说到文本搜索工具,大家一定会知道 grep, 它是 linux 最有用并最常用的工具之一. 但如果要再一个大的工程项目中搜索某个关键词,大家也一定知道它比较耗时. 所以就有了很多替代工具,之前最 ...

  6. 【开发工具】【git】通过关键字搜索对应的git提交日志

    因为想查看某一个函数对应在源码中的修改记录,就想到了git log.试试看能不能搜索到相关信息. 想找到一个内核函数相关的git log修改记录,第一想法是"git log + grep&q ...

  7. Linux之文本搜索命令 grep

    Linux之文本搜索命令 1. grep命令的使用 命令 说明 grep 文本搜索 grep命令效果图: [使用单引号和双引号效果是一样的] 2. grep命令选项的使用 命令选项 说明 -i 忽略大 ...

  8. grep 两个字符串_文本搜索神器Grep

    假设有一个文件(或一堆文件),并且想要在这些文件中搜索特定的字符串或配置关键字.Windows下,你可能会打开这些文件用搜索框(CTRL+F)输入关键字点搜索,这很麻烦而且还不能随心所欲的搜.在Lin ...

  9. shell中用grep查找并且不输出_grep awk 搜索日志常用命令

    0 grep 常用参数 --color:高亮显示匹配到的字符串 -v:显示不能被pattern匹配到的 -i:忽略字符大小写 -o:仅显示匹配到的字符串 -q:静默模式,不输出任何信息 -A#:aft ...

最新文章

  1. boost::mp11::mp_replace相关用法的测试程序
  2. .NET Core + Ocelot:API 网关
  3. 别再被三次握手和四次挥手所支配!把TCP这玩意儿给你掰开了说
  4. 2018司法人工智能:罪名预测、刑期预测、法条推荐
  5. 【读书笔记】 —— 公平与正义
  6. 数据库管理工具_NavicatPemium_入门使用
  7. DnsFookup:一款功能强大的DNS重绑定工具
  8. python抠图_Python实现抠图
  9. iozone联机测试
  10. 分享27个高质量前端大佬的油管频道(上)
  11. python实现·数据结构与算法之单向链表
  12. Redis:字符串MSET、MSETNX、MGET命令介绍
  13. PUN☀️八、拓展网络同步:RPCs 和 Properties
  14. Android性能优化方案
  15. 地理信息系统和计算机系统的区别,GIS与其他信息系统的区别
  16. Linux DNS之正向解析(邮件记录、别名解析、泛域名解析)
  17. 拜水野三坡 求得一身财气
  18. 转换并压缩视频的小技巧
  19. sift是图像匹配的非常经典的算法
  20. PC_@BCD码(8421BCD)@定点数加减法@补码减法公式

热门文章

  1. 长沙网络推广浅析新站怎么做会对排名提升更有帮助?
  2. 网络营销外包专员浅析响应式网站建设应注意哪些网络营销外包细节
  3. 网页快照是什么?对SEO优化有什么作用?
  4. oracle dbms refresh,oracle 10g中dbms_mview.refresh()函数
  5. css 引用otf文件,CSS-如何将OTF / TTF文件转换为EOT格式?
  6. vim实用技巧-笔记(第九章)
  7. 读书笔记 《Perl语言入门》 Day 1
  8. 开发日记-20190620 关键词 今日回顾
  9. 下载恶意pcap包的网站
  10. StratifiedShuffleSplit 交叉验证