[英]Inspect git repo after using BFG repo-cleaner
非常基本的 git 问题:
我向 Github 上传了一些妥协信息,并使用 bfg 来清理 repo。 我遵循了文档并执行了以下操作:
$ git clone --mirror git://example.com/some-big-repo.git
$ bfg --replace-text passwords.txt my-repo.git
我收到以下输出:
Found 233 objects to protect
Found 9 commit-pointing refs : HEAD, refs/heads/experimental, refs/heads/master, ...
Protected commits
-----------------
These are your protected commits, and so their contents will NOT be altered:
* commit 497fc1c8 (protected by 'HEAD')
Cleaning
--------
Found 80 commits
Cleaning commits: 100% (80/80)
Cleaning commits completed in 301 ms.
BFG aborting: No refs to update - no dirty commits found??
我想看看我的存储库中的私人信息是否已清除,但我不确定如何检查镜像存储库中的文件。 有什么想法吗?
检查密码是否仍在您的历史记录中的一种快速方法可能是使用“git pickaxe”,也就是-S
选项。 这是一个检查字符串password1
的示例:
git log -Spassword1
但是,从您的问题中显示的输出来看,看起来 BFG 在您的存储库中找不到来自passwords.txt
任何条目(提示消息“未找到脏提交??”输出),如果您确定它们在那里,这有点奇怪。 这是您第一次在 repo 上运行 BFG 吗? 可能是第二次了,BFG已经把密码去掉了?
您提供给 BFG 的passwords.txt
文件每行应该有一个密码,即:
changeme
password1
password2
默认情况下,BFG 仅查看 1MB 以下的文本文件。 您的密码是否在某个看起来是二进制的或大于 1MB 的文件中?
更新:要查看 repo-clean-up 中的变化,您还可以尝试 Eric S. Raymond 的repodiffer
(他的reposurgeon项目的一部分): http : //www.catb.org/~esr/reposurgeon/repodifer.html -你像这样使用它:
$ repodiffer old-repo-copy.git new-repo-copy.git
该脚本可能需要一段时间才能运行,但它会准确地告诉您这两个存储库之间发生了什么变化。
完全披露:我是 BFG Repo-Cleaner 的作者。
我想在这里留下一个补充,因为我花了一个小时试图弄清楚为什么我会收到相同的错误消息:
BFG aborting: No refs to update
我完全想不通为什么。
然后我意识到 BFG 和 git 一样是区分大小写的——我输入的文件名都是小写的,而 git 中的版本有一个大写的首字母。
因为我在 Windows 上,所以我没有想过这个 - 那里的文件系统不区分大小写。
希望这会为其他人节省几个小时的痛苦!
要仔细检查您的存储库中是否不再存在特定的敏感数据,您可以使用以下命令:
git log --patch | grep --color=auto secret
或者使用less +/secret
而不是grep
在上下文中查看它。
在 OSX 上遇到了同样的问题 2 小时。 在我的情况下,问题是 password.txt 文件(可能已损坏或其他)。 确保使用 vi/nano 通过终端创建 .txt。 不要使用 TextEdit 等工具创建它并更改扩展名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.