因此,如果我有一个名为foo.rb的文件,并且它给我一个名为bar的缺失方法的错误,那么我想在foo.rb的历史记录中搜索该字符串bar
以查看它是否在过去被定义过。
我发现这个Search all of Git history for a string?
但这会搜索所有文件。我只想在一个文件中搜索。
因此,如果我有一个名为foo.rb的文件,并且它给我一个名为bar的缺失方法的错误,那么我想在foo.rb的历史记录中搜索该字符串bar
以查看它是否在过去被定义过。
我发现这个Search all of Git history for a string?
但这会搜索所有文件。我只想在一个文件中搜索。
为此,您可以使用 -S 选项来 git log:
git log -S'bar' -- foo.rb
或者也许你可以试试这个(来自相关问题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
)
它实际上会查找文件内容,而不是为任何出现的 bar 提交消息/补丁。
git log 命令有一个覆盖(来自手册):
$ git log Makefile # commits that modify Makefile
所以你可以使用:
git log foo.rb | grep "bar"
我使用
git log -S "string" --follow -p "path of file"
它显示了该字符串的所有更改的完整历史记录。