git搜索--grep

1. 查找某個關鍵字(好比函數名):git

 

$ 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, 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’選項:app

$ git grep -n xmmap



config.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 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: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號:spa

$ 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號、文件名:code

$ 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. 某些關鍵字邏輯組合blog

 

2.1 邏輯:某一行既包括...又包括...字符串

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

 

2.2 邏輯:某一行包括...或者包括...string

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

 

--or 是默認行爲,若是省略:it

------------------->$ 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
相關文章
相關標籤/搜索