因此,如果我有一个名为 foo.rb 的文件,并且它给我一个名为 bar 的遗漏方法的错误,那么我想搜索<的历史记录<字符串bar
的strong> foo.rb ,以查看它是否曾在过去定义过。
我发现了Search all of Git history for a string?
但是这会搜索所有文件。我只想在一个文件中搜索。
答案 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"
会显示该字符串的所有更改的完整历史记录。