首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git搜索所有差异

Git搜索所有差异
EN

Stack Overflow用户
提问于 2012-06-17 08:53:59
回答 1查看 15.6K关注 0票数 31

我正在尝试搜索我的git历史中与一个非常具体的变量名相关的更改。

我试过这样做:

代码语言:javascript
复制
git diff HEAD~25000 | grep -in mydistinctvariablename

结果没有告诉我结果行来自哪个提交,这需要相当多的时间(大约5-7分钟)。

有没有人有更好的解决方案,时间和结果呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-17 14:53:09

git log通常是在检查提交历史时使用的命令。git log --grep可用于在提交消息中搜索正则表达式。

您需要的是简单地搜索提交内容的git log -S,或者使用正则表达式搜索提交内容的git log -G

-S查找引入或删除的实例的差异。注意,这不同于简单地出现在diff输出中的字符串;有关更多详细信息,请参阅gitdiffcore(7)中的pickaxe条目。

因此,例如,在msysGit存储库中,我可以使用以下两种方法找到引入Tcl8.5.8的提交:

代码语言:javascript
复制
C:\src\msysgit\src>git log --oneline --grep "8\.5\.8"
d938476 Make `NO_SFX=1 portable-release.sh` work
ef1dc94 Update tk to version 8.5.8
a910049 Update tcl to version 8.5.8
a702d7f tcltk: update to 8.5.8 and exclude release.sh from the cleanup list

它只是在commit消息中查找8.5.8,或者正如您所希望的那样,查看只出现在提交的差异中的字符串:

代码语言:javascript
复制
C:\src\msysgit\src>git log --oneline -S"version=8.5.8"
7be8622 tcltk: update release.sh script for tcl/tk 8.5.9
a702d7f tcltk: update to 8.5.8 and exclude release.sh from the cleanup list

您在样本中的范围限制在这里仍然可以用来限制要检查的提交。仔细阅读git日志手册,对它可以做的所有事情有一个很好的了解。

请注意,-S只查找简单的字符串差异-如果您真的想使用与示例类似的正则表达式搜索内容,那么您应该使用-G选项而不是-S,但这样会慢得多。

票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11068145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档