为了账号安全,请及时绑定邮箱和手机立即绑定

如何grep Git为某个单词提交差异或内容?

如何grep Git为某个单词提交差异或内容?

Git
肥皂起泡泡 2019-08-23 14:25:05
如何grep Git为某个单词提交差异或内容?在Git代码库中,我想列出包含特定单词的所有提交。我试过这个git log -p | grep --context=4 "word"但它并不一定会给我回文件名(除非它比我搜索的单词少了5行。我也尝试过git grep "word"但它只给我现在的文件,而不是历史。如何搜索整个历史记录以便我可以跟踪特定单词的更改?我的意思是在我的代码库中搜索单词的出现以跟踪更改(在文件历史记录中搜索)。
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

如果要查找提交消息包含给定单词的所有提交,请使用

$ git log --grep=word

如果你想找到所有在文件内容中添加或删除“word”的提交(更确切地说:“word”的出现次数发生变化),即搜索提交内容,使用所谓的'pickaxe'搜索

$ git log -Sword

在现代的git中也有

$ git log -Gword

查找添加或删除的行与“word”匹配的差异(也是提交内容)。

请注意,-G默认情况下接受正则表达式,同时-S接受字符串,但可以修改为接受正则表达式使用--pickaxe-regex

为了说明之间的区别-S<regex> --pickaxe-regex,并-G<regex>考虑在同一个文件中的以下DIFF提交:

+    return !regexec(regexp, two->ptr, 1, &regmatch, 0);...-    hit = !regexec(regexp, mf2.ptr, 1, &regmatch, 0);

虽然git log -G"regexec\(regexp"会显示此提交,但git log -S"regexec\(regexp" --pickaxe-regex不会(因为该字符串的出现次数没有改变)。


查看完整回答
反对 回复 2019-08-23
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

git log的镐会发现包含“单词”的更改 git log -Sword


查看完整回答
反对 回复 2019-08-23
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

经过大量的实验,我可以推荐以下内容,它显示引入或删除包含给定正则表达式的行的提交,并在每个中显示文本更改,颜色显示添加和删除的单词。

git log --pickaxe-regex -p --color-words -S "<regexp to search for>"

需要一段时间才能运行... ;-)


查看完整回答
反对 回复 2019-08-23
  • 3 回答
  • 0 关注
  • 457 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信