在Git代码库中,我想列出包含某个单词的所有提交。我试过了

git log -p | grep --context=4 "word"

但它不一定会返回文件名(除非它与我搜索的单词相距不到五行。我也尝试过

git grep "word"

但它只给了我目前的档案,而不是历史。

如何搜索整个历史,以便跟踪特定单词的变化?我打算在我的代码库中搜索单词的出现,以跟踪更改(在文件历史中搜索)。


当前回答

vim逃犯对于vim中的这种检查是全能的。

使用:Ggrep来完成此操作。有关更多信息,您可以安装vim逃犯并通过以下方式查找图里亚尔:help Grep。这一集:探索数字存储的历史将指导你做到这一切。

其他回答

经过大量实验,我可以推荐以下内容,其中显示了引入或删除包含给定正则表达式的行的提交,并显示每个行中的文本更改,颜色显示添加和删除的单词。

git log --pickaxe-regex -p --color-words -S "<regexp to search for>"

需要一段时间才能运行…;-)

vim逃犯对于vim中的这种检查是全能的。

使用:Ggrep来完成此操作。有关更多信息,您可以安装vim逃犯并通过以下方式查找图里亚尔:help Grep。这一集:探索数字存储的历史将指导你做到这一切。

还有一种方法/语法是:git-log-S“word”像这样,你可以搜索gitlog-S“带有空格和其他@/#ü!”

如果你想搜索敏感数据,以便将其从Git历史记录中删除(这就是我登陆这里的原因),有一些工具可以实现这一点。GitHub作为该问题的专用帮助页面。

以下是本文的要点:

BFG Repo Cleaner是git过滤器分支的一种更快、更简单的替代方法,用于删除不需要的数据。例如,要删除包含敏感数据的文件并保持最新提交不受影响),请运行:

bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA

要替换passwords.txt中列出的所有文本,请运行:

bfg --replace-text passwords.txt

请参阅BFG Repo Cleaner的文档以了解完整的用法和下载说明。

gitlog的鹤嘴锄将通过gitlog-Sword查找包含“word”在内的更改的提交