代码之家  ›  专栏  ›  技术社区  ›  Alex Zhukovskiy

在文件的所有修订中搜索文本

git
  •  1
  • Alex Zhukovskiy  · 技术社区  · 7 年前

    我有一个文件,其中包含一些文本,然后被删除。

    我忘记了具体的承诺和它存在于哪个分支。

    有什么方法可以搜索文件的所有修订版本吗 跨越所有分支 找到一个包含特定文本的提交文件?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Baklap4    7 年前

    为此,您可以使用-s选项 git log :

    git log -S'bar' -- foo.rb
    

    这个搜索文本 bar 在文件中 foo.rb

    如果要搜索所有差异,可以执行以下操作: git log -G'bar' -- foo.rb

    当-s或-g找到一个更改时,显示该更改集中的所有更改,而不仅仅是包含更改的文件。

    注释 :此搜索是 区分大小写 .

    如果添加 -i 你可以搜索不区分大小写。发出完整的命令:

    git log -i -S'bar' -- foo.rb
    

    注释2 :这只在当前分支中搜索。

    如果要搜索所有分支,应添加 --all 旗帜

    假设refs/中的所有refs以及head都列在命令行中为。

    完整的命令将是:

    git log --all -i -S'bar' -- foo.rb
    

    输出如下:

    $ git log --all -i -S'bar' -- foo.rb
    
    commit 53106e9cd319a2d8f960a3bbf2731acd0699a54f (feature/x)
    Author: name <email>
    Date:   Fri Jan 18 13:59:32 2019 +0100
    
        Added word