Git 搜索文件所有版本的文本帐户

Git 搜索文件所有版本的文本帐户,git,Git,我有一个文件,其中包含一些文字在某个点,然后被删除 我忘记了确切的提交以及它存在于哪个分支中 是否有任何方法可以在所有分支中搜索文件的所有修订版,并找到文件包含特定文本的提交?为此,您可以使用-S选项: 这将搜索文件foo.rb 如果您想搜索所有差异,可以执行以下操作:git log-G'bar'-foo.rb 当-S或-G发现更改时,显示该更改集中的所有更改,而不仅仅是包含中更改的文件 注意:此搜索区分大小写 如果添加-i,则可以不区分大小写进行搜索。生成完整的命令: git log -i -

我有一个文件,其中包含一些文字在某个点,然后被删除

我忘记了确切的提交以及它存在于哪个分支中


是否有任何方法可以在所有分支中搜索文件的所有修订版,并找到文件包含特定文本的提交?

为此,您可以使用-S选项:

这将搜索文件
foo.rb

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

当-S或-G发现更改时,显示该更改集中的所有更改,而不仅仅是包含中更改的文件

注意:此搜索区分大小写

如果添加
-i
,则可以不区分大小写进行搜索。生成完整的命令:

git log -i -S'bar' -- foo.rb
注意2:此操作仅在当前分支中搜索

如果要在所有分支上搜索帐户,则应添加
--all
标志

假设refs/中的所有REF以及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
$git log--all-i-S'bar--foo.rb
提交53106e9cd319a2d8f960a3bbf2731acd0699a54f(功能/x)
作者:姓名
日期:2019年1月18日星期五13:59:32+0100
附加词

为此,您可以使用-S选项:

这将搜索文件
foo.rb

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

当-S或-G发现更改时,显示该更改集中的所有更改,而不仅仅是包含中更改的文件

注意:此搜索区分大小写

如果添加
-i
,则可以不区分大小写进行搜索。生成完整的命令:

git log -i -S'bar' -- foo.rb
注意2:此操作仅在当前分支中搜索

如果要在所有分支上搜索帐户,则应添加
--all
标志

假设refs/中的所有REF以及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
$git log--all-i-S'bar--foo.rb
提交53106e9cd319a2d8f960a3bbf2731acd0699a54f(功能/x)
作者:姓名
日期:2019年1月18日星期五13:59:32+0100
附加词

git log-p文件
若要显示差异(作为补丁),则可以轻松搜索特定文本的结果
git log-p文件
若要显示差异(作为补丁),则可以轻松搜索仅在当前分支历史中搜索的特定文本的结果。例如,我创建了另一个分支,在那里我用
blablah
提交了一个文件,然后我切换回master并运行命令
git log-S'blablah'
不返回任何内容,当我希望看到
分支X,commit 124abcf16
时,您应该添加
--all
选项:)我更新了答案还注意,如果文件被重命名和/或复制,您可以查看
-M
-C
命令行选项。它仅在当前分支历史记录中搜索。例如,我创建了另一个分支,在那里我用
blablah
提交了一个文件,然后我切换回master并运行命令
git log-S'blablah'
不返回任何内容,当我希望看到分支X,commit 124abcf16时,您应该添加
--all
选项:)我更新了答案还注意,如果文件被重命名和/或复制,您可能会看到
-M
-C
命令行选项。