在Git代码库中,我想列出包含特定单词的所有提交.我试过这个
git log -p | grep --context=4 "word"
Run Code Online (Sandbox Code Playgroud)
但它并不一定会给我回文件名(除非它比我搜索的单词少了5行.我也尝试过
git grep "word"
Run Code Online (Sandbox Code Playgroud)
但它只给我现在的文件,而不是历史.
如何搜索整个历史记录以便我可以跟踪特定单词的更改?我的意思是在我的代码库中搜索单词的出现以跟踪更改(在文件历史记录中搜索).
Jak*_*ski 849
如果要查找提交消息包含给定单词的所有提交,请使用
$ git log --grep=word
Run Code Online (Sandbox Code Playgroud)
如果你想找到所有在文件内容中添加或删除"word"的提交(更确切地说:"word"的出现次数发生变化),即搜索提交内容,使用所谓的'pickaxe'搜索
$ git log -Sword
Run Code Online (Sandbox Code Playgroud)
在现代的git中也有
$ git log -Gword
Run Code Online (Sandbox Code Playgroud)
查找添加或删除的行与"word"匹配的差异(也是提交内容).
请注意,-G默认情况下接受正则表达式,同时-S接受字符串,但可以修改为接受正则表达式使用--pickaxe-regex.
为了说明之间的区别
-S<regex> --pickaxe-regex,并-G<regex>考虑在同一个文件中的以下DIFF提交:Run Code Online (Sandbox Code Playgroud)+ return !regexec(regexp, two->ptr, 1, ®match, 0); ... - hit = !regexec(regexp, mf2.ptr, 1, ®match, 0);虽然
git log -G"regexec\(regexp"会显示此提交,但git log -S"regexec\(regexp" --pickaxe-regex不会(因为该字符串的出现次数没有改变).
u0b*_*6ae 251
git log的镐会发现包含"单词"的更改 git log -Sword
Cha*_*esW 20
经过大量的实验,我可以推荐以下内容,它显示引入或删除包含给定正则表达式的行的提交,并显示每个中的文本更改,颜色显示添加和删除的单词.
git log --pickaxe-regex -p --color-words -S "<regexp to search for>"
Run Code Online (Sandbox Code Playgroud)
需要一段时间才能运行... ;-)
ken*_*orb 10
您可以尝试以下命令:
git log --patch --color=always | less +/searching_string
Run Code Online (Sandbox Code Playgroud)
或grep以下列方式使用:
git rev-list --all | GIT_PAGER=cat xargs git grep 'search_string'
Run Code Online (Sandbox Code Playgroud)
在要搜索的父目录中运行此命令.
| 归档时间: |
|
| 查看次数: |
151577 次 |
| 最近记录: |