【发布时间】:2020-01-24 12:39:09
【问题描述】:
我正在发送 Github 文章 "Removing sensitive data from a repository" 以便从 Github 存储库中删除一些敏感数据,但我不知道如何将我在本地所做的所有更改“强制推送”到 Github,让我更好地解释一下:
- 我创建了一个测试存储库并提交了一些 fake sensitive data,这是一个名为
fake_sensitive_data.txt的文件,位于项目的根目录中。 - 我开始 committing more files 到 repo
- 我创建了一个 commit to remove 来自 repo 的敏感数据
- 我将项目克隆到不同的文件夹中
- 在新克隆的文件夹中,我使用命令
bfg --delete-files fake_sensitive_data.txt从 git 历史记录中删除了fake_sensitive_data.txt:
Using repo : git-test-removing-sensitive-data-clean/.git
Found 7 objects to protect
Found 3 tag-pointing refs : refs/tags/v1, refs/tags/v2, refs/tags/v3
Found 5 commit-pointing refs : HEAD, refs/heads/master, refs/remotes/origin/HEAD, ...
Protected commits
-----------------
These are your protected commits, and so their contents will NOT be altered:
* commit b8c88b09 (protected by 'HEAD')
Cleaning
--------
Found 11 commits
Cleaning commits: 100% (11/11)
Cleaning commits completed in 73 ms.
Updating 6 Refs
---------------
Ref Before After
-------------------------------------------------------------
refs/heads/master | b8c88b09 | 82104232
refs/remotes/origin/lev/pr-to-stay-open | 2b131b17 | 0bcfb420
refs/remotes/origin/master | b8c88b09 | 82104232
refs/tags/v1 | c740754e | b8a33de1
refs/tags/v2 | 4abc08c8 | a0fdb11d
refs/tags/v3 | a448a05e | 4c4176a7
Updating references: 100% (6/6)
...Ref update completed in 18 ms.
Commit Tree-Dirt History
------------------------
Earliest Latest
| |
. D D D DD D D D m m
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 | 0cd750f6 | dedd68e8
Last dirty commit | 2b131b17 | 0bcfb420
Deleted files
-------------
Filename Git id
------------------------------------------
fake_sensitive_data.txt | cc86c97f (199 B)
In total, 18 object ids were changed. Full details are logged here:
git-test-removing-sensitive-data-clean.bfg-report/2020-01-24/09-22-19
BFG run is complete! When ready, run: git reflog expire --expire=now --all && git gc --prune=now --aggressive
- 清理完成后,我使用以下命令将内容强制推送到 Github:
git push origin --force --all && git push origin --force --tags
所以这些是我为了从我的仓库中清除文件 fake_sensitive_data.txt 所遵循的步骤,现在是我面临的问题:
- 文件仍保留在ACTIVE 分支中。
- 文件仍保留在来自已删除分支的COMMITS 和never merged。
- 该文件仍保留在已合并到 master 的 PRs 中。
所以我的问题是,如何从所有分支、提交、PR、标签(任何东西)中删除文件和历史并将其推送到 Github?
【问题讨论】:
标签: git github version-control