为什么在使用 BFG 清理文件后,我仍然可以在 GitHub 历史记录中看到文件?
Why can I still see files in GitHub history after cleaning them with the BFG?
我正在处理一个小组项目,我想从所有内存中删除一个文件。内容、文件名,应有尽有!我不想在 Git 存储库中留下任何痕迹。我一直在尝试使用 bfg
来做到这一点,但我仍然可以在 Git 中心页面上找到该文件,使用它是“在历史的这一点浏览存储库功能".
作为 git 存储库的目录是 .../electricity_profiles
,在目录 electricity_profiles/data
中 是 我要删除的文件(我试过 bfg --delete-files .~lock.smart_meter_data_overlap.csv#
)。从那以后我就把它从当前的提交中删除了,但是它有几个提交回来了 commit 5c50c67d1be4e869bc75fb7d3916b9fc814b8106
.
我如何才能删除该文件曾经存在的所有证据,即使在 github 上也是如此,这样当其他人拉取该文件时他们将看不到它?
我看过:
- Could not remove sensitive data
- Inspect git repo after using BFG repo-cleaner
但还没想好。
到目前为止完成的工作:(似乎有效)。
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
正在完成进程。
cd electricity_profiles.git
git push --mirror https://github.com/oliversheridanmethven/electricity_profiles.git
查看 Github 回购似乎有效。
我是 BFG 的作者 - 我 re-titled 你的问题 "Why can I still see files in GitHub history after cleaning them with the BFG?" 因为它可能更能代表你的问题。
你的问题描述并没有完全清楚,但我猜测在 BFG 运行 的报告中,BFG did 报告它删除了文件(如果 BFG 没有找到要删除的目标,它会报告错误,而你没有提到看到那个,所以我的猜测是 BFG 确实找到了你的文件,并将它们从历史记录中删除)。
首先,您需要确保您遵循了 https://rtyley.github.io/bfg-repo-cleaner/#usage 中的所有步骤,尤其是:
- 您正在清理
mirror
存储库
- 你将这个清理过的镜像仓库推回 GitHub。
如果您正确执行了所有这些步骤,为什么在使用 BFG 清理文件后,您仍然可以在 GitHub 历史记录中看到文件?一个可能的解释是 GitHub 还没有对该 repo 进行垃圾回收。 GitHub 只定期进行 GC,所以旧的提交在之后的一段时间内仍然可见:
我正在处理一个小组项目,我想从所有内存中删除一个文件。内容、文件名,应有尽有!我不想在 Git 存储库中留下任何痕迹。我一直在尝试使用 bfg
来做到这一点,但我仍然可以在 Git 中心页面上找到该文件,使用它是“在历史的这一点浏览存储库功能".
作为 git 存储库的目录是 .../electricity_profiles
,在目录 electricity_profiles/data
中 是 我要删除的文件(我试过 bfg --delete-files .~lock.smart_meter_data_overlap.csv#
)。从那以后我就把它从当前的提交中删除了,但是它有几个提交回来了 commit 5c50c67d1be4e869bc75fb7d3916b9fc814b8106
.
我如何才能删除该文件曾经存在的所有证据,即使在 github 上也是如此,这样当其他人拉取该文件时他们将看不到它?
我看过:
- Could not remove sensitive data
- Inspect git repo after using BFG repo-cleaner
但还没想好。
到目前为止完成的工作:(似乎有效)。
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
正在完成进程。
cd electricity_profiles.git
git push --mirror https://github.com/oliversheridanmethven/electricity_profiles.git
查看 Github 回购似乎有效。
我是 BFG 的作者 - 我 re-titled 你的问题 "Why can I still see files in GitHub history after cleaning them with the BFG?" 因为它可能更能代表你的问题。
你的问题描述并没有完全清楚,但我猜测在 BFG 运行 的报告中,BFG did 报告它删除了文件(如果 BFG 没有找到要删除的目标,它会报告错误,而你没有提到看到那个,所以我的猜测是 BFG 确实找到了你的文件,并将它们从历史记录中删除)。
首先,您需要确保您遵循了 https://rtyley.github.io/bfg-repo-cleaner/#usage 中的所有步骤,尤其是:
- 您正在清理
mirror
存储库 - 你将这个清理过的镜像仓库推回 GitHub。
如果您正确执行了所有这些步骤,为什么在使用 BFG 清理文件后,您仍然可以在 GitHub 历史记录中看到文件?一个可能的解释是 GitHub 还没有对该 repo 进行垃圾回收。 GitHub 只定期进行 GC,所以旧的提交在之后的一段时间内仍然可见: