【问题标题】:Inspect git repo after using BFG repo-cleaner使用 BFG repo-cleaner 后检查 git repo
【发布时间】:2014-01-06 22:47:45
【问题描述】:

非常基本的 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 github repository git-rewrite-history bfg-repo-cleaner


    【解决方案1】:

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

    git log -Spassword1
    

    但是,从您的问题中显示的输出来看,BFG 似乎在您的 repo 中找不到来自passwords.txt 的任何条目(提示消息'没有找到脏提交??' em> 您在输出末尾看到的),如果您确定它们在那里,这有点奇怪。这是你第一次在 repo 上运行 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 的作者。

    【讨论】:

    • 谢谢。镐正是我要找的。我最终决定使用标准的蛮力 git-filter-branch 方法来完全擦除该种子文件的日志历史记录(因为它本来应该在我的 .gitignore 中)。
    • 当然——如果你想完全删除任何名为seeds的文件,你也可以使用bfg --delete-files seeds my-repo.git
    • 啊,非常好。再次感谢。
    【解决方案2】:

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

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

    或使用less +/secret 而不是grep 在上下文中查看它。

    【讨论】:

      【解决方案3】:

      我想在这里留下一个补充,因为我花了一个小时试图弄清楚为什么我会收到相同的错误消息:

      BFG aborting: No refs to update
      

      我完全不知道为什么。

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

      因为我在 Windows 上,我没有想到这一点 - 那里的文件系统不区分大小写。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-28
          • 1970-01-01
          • 2023-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多