我有一个代码库,我想把它作为开源推送到GitHub。在这个Git控制的源代码树中,我有某些包含密码的配置文件。我确保不跟踪这个文件,我也把它添加到.gitignore文件中。但是,我想绝对肯定,没有敏感信息会被推送,也许是在提交之间滑倒了什么。我怀疑我这样做是否足够粗心,但我想成为积极。
.gitignore
有没有办法“grep”所有的Git?我知道这听起来很奇怪,但通过“all”我的意思是曾经存在的每个文件的每个版本。我想如果有一个命令可以为每次提交转储diff文件,这可能有效?
git rev-list --all | (while read revision; dogit grep -F 'password' $revisiondone)
Git可以使用-S选项搜索差异(它被称为匹克斧在文档)
git log -S password
这将查找添加或删除字符串password的任何提交。这里有几个选项:
password
-p
-p file
-G
-S
--all
--branches[=<pattern>]
--tags[=<pattern>]
尝试以下命令在所有先前跟踪的文件中搜索字符串:
git log --patch | less +/searching_string
或
git rev-list --all | GIT_PAGER=cat xargs git grep 'search_string'
它需要从您要进行搜索的父目录运行。