如何将字符串传递给 git log -S 而不仅仅是一个单词?

How can I pass a string to git log -S instead of just a word?

我想搜索包含字符串 "hello world" 的提交或在文件中包含该短语的任何提交。

git log -SHello World 无效

git log -S'Hello World' 无效

git log -S"hello world" 无效

我一直在使用:git log -i --grep='hello world' 但是这个只适用于提交消息。

I wanted to search for the commit that either contains the string "hello world"

搜索提交非常简单:

git log | grep "new image"

or any commit that included that phrase inside of a file. For this you will need to loop on each commit, check it out and then search for the give string.

对于此类任务,您需要使用 git filter-branch ...

# you will need something like:
git filter-branch --tree-filter "
      find . 
      -type f 
      -exec grep -rnw '/path/to/somewhere/' -e "pattern""

镐搜索 (git log -S) 在提交中查找 additionremoval 的单词(以及 在提交消息中)。
参见comment on this answer

如果您有包含该词的提交 消息,但提交内容本身没有 添加的“hello worldremoved (意思是,例如,它已经存在于之前的提交中),该提交将 not 被报告。

除此之外,git log -S 'This repos'git log -S'This repos' 应该可以正常工作。

命令git log "-Shello world"怎么样?