使用BFG repo-cleaner后检查git仓库

5

一个非常基础的git问题:

我将一些敏感信息上传到Github,并使用bfg来清理仓库。我按照文档进行了操作,执行了以下步骤:

$ 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??

我想确认私人信息是否已从我的仓库中清除,但我不确定如何检查镜像仓库中的文件。有什么建议吗?
4个回答

7
快速检查密码是否仍在历史记录中的方法可能是使用“git pickaxe”,也称为-S选项。以下是一个示例,用于检查字符串password1
git log -Spassword1

然而,从您提供的输出结果来看,似乎 The BFG 在您的仓库中找不到任何来自 passwords.txt 的条目(导致您在输出末尾看到“no dirty commits found??”这条消息),如果您确定它们在里面,这有点奇怪。这是您第一次在仓库上运行 BFG 吗?也许这是第二次,而 BFG 已经删除了密码?给 BFG 的 passwords.txt 文件应该每行只有一个密码。
changeme
password1
password2

默认情况下,BFG仅查看小于1MB的文本文件。您的密码是否在某个似乎是二进制文件或大于1MB的文件中?更新:要查看存储库清理中发生了什么变化,您还可以尝试Eric S. Raymond的repodiffer(他的reposurgeon项目的一部分):http://www.catb.org/~esr/reposurgeon/repodiffer.html - 使用方法如下:
$ repodiffer old-repo-copy.git new-repo-copy.git

该脚本可能需要一段时间才能运行,但它会精确地告诉您这两个仓库之间发生了什么变化。
完全透明:我是BFG Repo-Cleaner的作者。

谢谢。这把鹤嘴锄正是我一直在寻找的。最终,我决定使用标准的 brute force git-filter-branch 方法来彻底清除那个 seeds 文件的日志历史记录(因为它本应该在我的 .gitignore 文件中)。 - Tag0Mag0
当然 - 如果您想完全删除名为“seeds”的任何文件,也可以使用bfg --delete-files seeds my-repo.git - Roberto Tyley
啊,非常好。再次感谢。 - Tag0Mag0
嗨,看起来repodiffer不再是reposurgeon的一部分了。reposurgeon的新闻文档提到“repodiffer已经被弃用”。您是否知道有什么替代方案? - laundmo

3
为了确认特定敏感数据已不再存在于您的代码库中,您可以使用以下命令进行检查:
git log --patch | grep --color=auto secret

或者使用less +/secret代替grep来查看上下文。


2

我想在这里补充一下,因为我花了一个小时来弄清楚为什么我一直收到相同的错误信息:

BFG aborting: No refs to update

我当时完全不知道原因。

后来我意识到,BFG和git一样,是区分大小写的——而我输入的文件名全是小写字母,而在git中的版本则是首字母大写。

由于我使用的是Windows系统,我没有考虑到这一点——那里的文件系统不区分大小写。

希望这篇文章能够为其他人节省几个小时的痛苦!


0

在OSX上,我遇到了相同的问题长达2个小时。在我的情况下,问题出在password.txt文件上(可能是损坏或其它原因)。请确保您使用vi / nano通过终端创建.txt文件,不要使用TextEdit等工具创建并更改扩展名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接