在搜索Git Diff中的术语时,我能否只显示该术语所在的行?

在搜索Git Diff中的术语时,我能否只显示该术语所在的行?,git,Git,我正在做一些CSS清理,希望找到在我们的代码中使用的类的位置,以确保它实际上是在我们的代码中使用的,而不是在我们的CMS或类似的东西中使用的 我们使用的是Git,所以我使用以下代码来搜索包含我要搜索的搜索词的代码差异,ScrollerRapper git log -GscrollerWrapper -p 使用-p标志,我可以得到文件的实际更改,但在某些情况下,它返回的文件有数千行长。理想情况下,我只希望看到我正在搜索的术语所在的行(如果我能在该行之前/之后看到x行,则更好) 我已经检查过了,但

我正在做一些CSS清理,希望找到在我们的代码中使用的类的位置,以确保它实际上是在我们的代码中使用的,而不是在我们的CMS或类似的东西中使用的

我们使用的是Git,所以我使用以下代码来搜索包含我要搜索的搜索词的代码差异,ScrollerRapper

git log -GscrollerWrapper -p
使用
-p
标志,我可以得到文件的实际更改,但在某些情况下,它返回的文件有数千行长。理想情况下,我只希望看到我正在搜索的术语所在的行(如果我能在该行之前/之后看到x行,则更好)

我已经检查过了,但没有看到相关参数

是否可以传递一些额外的参数,将差异限制为仅包含我的搜索词的行,或者运行另一个查询来执行此操作


谢谢大家!

您可以通过管道将
git日志
输出传输到
grep
。在Windows上,您可以使用Git Bash实现这一点
grep
有一些参数来指定为每个匹配的行提供多少上下文。

最简单的方法是使用内置的搜索工具,这可以让您滚动查看
git log
的文本


对于大多数寻呼机,键入
/
,然后键入要搜索的内容。因此,正常运行
git log-GscrollerWrapper-p
,然后键入
/
,然后键入
scrollerWrapper
。这将进入第一次出现的
ScrollerRapper
。点击
n
将带您进入下一个。

一般来说,每当我需要搜索存储库时,我总是听从尊敬的Gitk。幸运的是,如果您知道如何使用
ps
命令,您可以在执行搜索时看到Gitk在后台运行的实际命令。Gitk提供了一种搜索功能,可以扫描存储库历史记录以查找字符串的添加/删除(我相信这就是您要查找的)。它实际上在后台运行的命令是
git diff tree
,这是一个非常复杂的命令,有大约470亿个选项

无论如何,我认为类似于git diff tree-r-U3-Ssearch_string的东西会对你有用

  • -r
    以递归方式进行整个搜索
  • -U
    用于输出统一的差异,其中
    3
    是上下文的行数
  • -S
    用于实际搜索字符串。以这种方式键入的格式看起来很有趣,而且别忘了根据搜索内容,可能需要转义特殊字符
  • 是您要从中搜索的位置。您只需将当前
    主文件
    或任何其他树的提交散列放入
如果您以前在命令行上使用git生成过统一的差异,那么这里的输出应该非常熟悉,并且看起来像:

$ git diff-tree -r -U3 -Sexisting_user 599479fc43401942cedef7187677fa222ec54c94
599479fc43401942cedef7187677fa222ec54c94
diff --git a/src/AppBundle/Controller/SubscriptionController.php b/src/AppBundle/Controller/SubscriptionController.php
index 3670973..55de07a 100644
--- a/src/AppBundle/Controller/SubscriptionController.php
+++ b/src/AppBundle/Controller/SubscriptionController.php
@@ -23,28 +23,17 @@ class SubscriptionController extends AbstractController
         $form->handleRequest($request);

         if ($form->isSubmitted() && $form->isValid()) {
-            $existing_user = $this->get('user_dao')->getUserByEmail($newly_invited_user->getEmail());
...

这将为您提供所需的所有内容,包括提交引用、行号和上下文。

…但是您不知道什么行是提交的一部分。@Schwern…也不知道哪行是哪个文件的一部分。我在发布我的答案后想到了这一点,并且一直在做一些研究以找到一个合理的解决方案。到目前为止没有运气-(这听起来像。你能告诉我们它被导入了什么以及为什么吗?根据你提出的答案,我想你已经明白了。只有当我不能用Git工具做我想做的事情时,才可以导入其他东西。我会更新问题来调整这句话。哦,或者使用GitkHmm.1)所以我在Git上落后了,所以我没有Gitk,但一旦我更新了搜索,搜索结果就没有预期的效果。我可能需要更多的努力。2) 因此,我使用了git log,抓取了最后一个提交哈希,当它运行一秒钟时,我没有得到任何结果。文档建议我可以这样做,它将搜索我提供的提交散列的父级。我错过什么了吗
git diff tree-r-U3-sscrollerrapper 2f9c3637a96f7aa3893d1715c69a28c5c092a9a0
格式看起来正确,在不知道repo的情况下,我根本无法对哈希进行注释。基本上,您要提供的哈希应该指向一个提交,该提交包含您要在其历史记录中搜索的所有提交。通常,这是
master
或其他类似于branch.Hmm的主干。最后一次提交是在master中,所以。。。奇怪的谢谢哇,我真的很喜欢这个,这给了我一个很好的理由来进一步研究寻呼机的功能。@JamesSkemp寻呼机很棒,并且与许多工具相关。