Git在单个文件历史记录中搜索字符串

时间:2012-04-18 18:00:26

标签: git

因此,如果我有一个名为 foo.rb 的文件,并且它给我一个名为 bar 的遗漏方法的错误,那么我想搜索<的历史记录<字符串bar的strong> foo.rb ,以查看它是否曾在过去定义过。

我发现了Search all of Git history for a string?

但是这会搜索所有文件。我只想在一个文件中搜索。

4 个答案:

答案 0 :(得分:189)

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

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

答案 1 :(得分:14)

或许您可以试试这个(来自相关问题 Search all of git history for string

git rev-list --all foo.rb | (
    while read revision; do
        git grep -F 'bar' $revision foo.rb
    done
)

它实际上会查找文件内容,而不会在任何事件发生时提交消息/补丁。

答案 2 :(得分:1)

git log命令的覆盖(来自manual):

$ git log Makefile      # commits that modify Makefile

所以你可以使用:

git log foo.rb | grep "bar"

答案 3 :(得分:0)

我用过 git log -S "string" --follow -p "path of file"会显示该字符串的所有更改的完整历史记录。