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的父目录运行。