search所有的Git历史logging的string?

我有一个代码库,我想推到GitHub作为开源。 在这个git控制的源代码树中,我有一些包含密码的configuration文件。 我确保不要跟踪这个文件,我也把它添加到.gitignore文件中。 不过,我想绝对肯定的是,没有任何敏感信息会被推动,也许如果在提交或者其他事情之间出现了某种东西。 我怀疑我是不小心做到这一点,但我想积极

有没有办法“grep”所有的混帐? 我知道这听起来很奇怪,但通过“所有”我想我的意思是每个版本的非常文件。 我猜如果有一个命令为每个提交转储差异文件,这可能工作?

Git可以用-S选项search差异( 在文档中它被称为镐)

 git log -Spassword 

这将find任何提交添加或删除stringpassword 。 这里有几个选项:

  • -p :会显示差异。 如果你提供一个文件( -p file ),它会为你生成一个补丁。
  • -G :查找添加或删除的行与给定的正则expression式匹配的差异,而不是-S ,“查找引入或删除string实例的差异”。
  • --all :search所有分支和标签; 或者,使用--branches[=<pattern>]--tags[=<pattern>]
 git rev-list --all | ( while read revision; do git grep -F 'password' $revision done ) 

尝试以下命令来search所有以前跟踪的文件中的string:

 git log --patch | less +/searching_string 

要么

 git rev-list --all | GIT_PAGER=cat xargs git grep 'search_string' 

这需要从您想要search的父目录运行。