使用BFG repo-cleaner后检查git repo

时间:2014-01-06 22:47:46

标签: git github repository git-rewrite-history bfg-repo-cleaner

非常基本的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 个答案:

答案 0 :(得分:6)

检查密码是否仍在历史记录中的快速方法可能是使用'git pickaxe',即-S选项。这是一个检查字符串password1的示例:

git log -Spassword1

但是,从您问题中显示的输出中,看起来BFG无法在您的仓库中找到passwords.txt中的任何条目(提示消息'没有发现脏提交?' 你在输出结尾看到的),如果你确定它们在那里有点奇怪。这是你第一次在回购上运行BFG吗?也许这是第二次,而且BFG已经删除了密码?

您提供给BFG的passwords.txt文件每行应该有一个密码,即:

changeme
password1
password2

BFG默认只查看1MB以下的文本文件。您的密码是否在某个文件中可能看起来是二进制或大于1MB?

更新:为了查看repo-clean-up中的更改,您还可以尝试Eric S. Raymond的repodiffer(他的reposurgeon项目的一部分):{ {3}} - 你这样使用它:

$ repodiffer old-repo-copy.git new-repo-copy.git

脚本可能需要一段时间才能运行,但它会准确地告诉您这两个回购之间的变化。

完全披露:我是BFG Repo-Cleaner的作者。

答案 1 :(得分:2)

我想在这里留一个补充,因为我花了一个小时试图解决为什么我收到同样的错误信息:

BFG aborting: No refs to update

我绝对无法理解为什么。

然后我意识到BFG和git一样,区分大小写 - 我输入的文件名都是小写的,而git中的版本有一个大写的首字母。< / p>

当我在Windows上时,我没有想过这个 - 文件系统没有区分大小写。

希望这可以为其他人节省几个小时的痛苦!

答案 2 :(得分:1)

要仔细检查您的仓库中是否不存在特定的敏感数据,您可以使用以下命令:

git log --patch | grep --color=auto secret

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

答案 3 :(得分:0)

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