使用BFG清理文件后,为什么还能看到GitHub历史记录中的文件?

时间:2017-01-17 15:45:00

标签: git github bfg-repo-cleaner

我正在处理一个群组项目,我想从所有内存中删除一个文件。内容,文件名,一切!我不想在Git回购中留下任何痕迹。我一直在尝试使用config.yml执行此操作,但我仍然可以在Github页面上找到该文件的“在此历史记录功能中浏览存储库”。

git repo的目录是bfg,在.../electricity_profiles目录中, 是我要删除的文件(我已经尝试electricity_profiles/data )。我从当前的提交中删除了它,但是有一些提交回bfg --delete-files .~lock.smart_meter_data_overlap.csv#

如何删除此文件存在的所有证据,即使是在github上,所以当其他人拉出文件时,他们将看不到它?

我看过:

但尚未弄明白。

到目前为止完成的工作:(似乎工作)。

commit 5c50c67d1be4e869bc75fb7d3916b9fc814b8106

控制台输出:

git clone --mirror https://github.com/oliversheridanmethven/electricity_profiles.git
bfg --delete-files .~lock.smart_meter_data_overlap.csv# electricity_profiles.git

完成整个过程。

Using repo : /home/user/Documents/InFoMM/case_studies/trial/electricity_profiles.git

Found 20 objects to protect
Found 2 commit-pointing refs : HEAD, refs/heads/master

Protected commits
-----------------

These are your protected commits, and so their contents will NOT be altered:

 * commit 1b1eef47 (protected by 'HEAD')

Cleaning
--------

Found 22 commits
Cleaning commits:       100% (22/22)
Cleaning commits completed in 141 ms.

Updating 1 Ref
--------------

    Ref                 Before     After   
    ---------------------------------------
    refs/heads/master | 1b1eef47 | 9701a5b7

Updating references:    100% (1/1)
...Ref update completed in 26 ms.

Commit Tree-Dirt History
------------------------

    Earliest        Latest
    |                    |
    ......D..D..m.m.mmmmmm

    D = dirty commits (file tree fixed)
    m = modified commits (commit message or parents changed)
    . = clean commits (no changes to file tree)

                            Before     After   
    -------------------------------------------
    First modified commit | 5c50c67d | ff47bcdf
    Last dirty commit     | 9671f6ad | f6d36763

Deleted files
-------------

    Filename                               Git id         
    ------------------------------------------------------
    .~lock.smart_meter_data_overlap.csv# | 7cf2b24f (92 B)


In total, 14 object ids were changed. Full details are logged here:

    /home/user/Documents/InFoMM/case_studies/trial/electricity_profiles.git.bfg-report/2017-01-18/11-48-37

BFG run is complete! When ready, run: git reflog expire --expire=now --all && git gc --prune=now --aggressive

看看Github回购它似乎有效。

1 个答案:

答案 0 :(得分:4)

我是BFG的作者 - 我把你的问题重新命名为“为什么在用BFG清理它们之后我还能看到GitHub历史中的文件?”因为它可能更能代表你的问题。

你的问题描述并没有完全清楚,但我猜测在BFG运行的报告中,BFG 做了报告它已经删除了文件(如果BFG没有找到目标删除,它会报告这是一个错误,你没有提到看到,所以我的猜测是BFG确实找到你的文件,并从历史中删除它们。)

首先,您需要确保遵循https://rtyley.github.io/bfg-repo-cleaner/#usage的所有步骤,特别是:

  • 您正在清理mirror repo
  • 您将此已清理的镜像回复推送回GitHub。

如果你正确地遵循了所有这些步骤,为什么在用BFG清理它们之后你仍然能看到GitHub历史中的文件?一个可能的解释是GitHub尚未对该回购进行垃圾收集。 GitHub只定期执行GC,因此旧的提交在一段时间后仍然可见: