如何从Github中删除用户敏感数据
我撰写Github文章是为了从Github回购中删除一些敏感数据,但我不知道如何将我在本地所做的所有更改“强制推送”到Github,让我更好地解释一下:如何从Github中删除用户敏感数据,git,github,version-control,Git,Github,Version Control,我撰写Github文章是为了从Github回购中删除一些敏感数据,但我不知道如何将我在本地所做的所有更改“强制推送”到Github,让我更好地解释一下: 我创建了一个测试报告并提交了一些,一个名为false\u sensitive\u data.txt的文件,它位于项目的根目录中 我开始进行回购 我从回购协议中创建了一个敏感数据 我将项目克隆到另一个文件夹中 在新克隆的文件夹中,我使用命令bfg--delete files-fake\u-sensitive\u-data.txt从git历史记录中
false\u sensitive\u data.txt
的文件,它位于项目的根目录中bfg--delete files-fake\u-sensitive\u-data.txt从git历史记录中删除了fake\u-sensitive\u-data.txt
:
git push origin--force--all&&git push origin--force--tags
false\u sensitive\u data.txt
,我采取了以下步骤,现在我面临的问题是:
git过滤器分支
所做的是通过将包含该文件的提交复制到不包含该文件的新提交来进行新的和改进的提交。(在本例中,新提交没有该文件这一事实就是改进之处。)
到目前为止,这相当简单。旧的承诺仍然存在,现在新的承诺也存在。但是你想让旧的消失。这就是一切都出错的地方。这也是事情变得有点复杂的地方
此时您应该问的问题是:
- Git首先是如何找到提交的
- 就这一点而言,人们如何找到一个承诺?提交的真实名称是什么
124e5707bf29a24cfb4167c869250fd919c42446
。这是提交的哈希ID。它
这是提交的真实名称。这就是拥有提交的人每次都能可靠地找到它的方式。您只需记住124eblahblah
(硬)或将其写在某个地方,然后剪切粘贴(简单)并运行git checkout hash id
,就可以使用它了
现在,每一个存储库,包括某个原始存储库的每个克隆,都有它接收到的每一个提交,减去它抛出的任何提交。请注意,BFG在结束其会话时建议运行:
git gc命令是git的死神垃圾收集器。它是内务管理程序,或者更准确地说,是单个内务管理程序的主管,负责寻找提交和其他无人能找到的Git对象。如果你找不到这个对象,如果它的散列ID没有写在Git可以看到的任何地方,那么,你显然不在乎Grim收集器是否完全删除了它
所以现在我们要问:
- 在哪里可以写下这些散列ID以便Git可以看到它们
master
)、标记名称(v1.2
)和远程跟踪名称(origin/master
)的来源。Git提供这些命名设备来查找一个特定的提交。2使用分支名称,这是我们应该说是分支的最后一个提交。对于任何其他名称,这只是一些散列ID,例如,标记可以将特定提交标记为“使用此提交访问版本1.2”
这些名称统称为引用或引用。当BFG说:
更新参考文献6
这就是它所说的。BFG将一些特定的原始承诺复制到新的和改进的承诺。然后,在复制了这些文件之后,它还必须复制所有后续提交,要么对它们进行改进(因为它们有您想要的文件),要么仅仅因为旧的提交保存了其他一些旧的、错误的提交的哈希ID,而这些提交现在已经得到了改进
一旦BFG复制并改进了所有需要改进的内容,并且复制了由于复制和改进而必须复制的所有其他内容,BFG就会进入并适当地更改每个参考
但是BFG只能更改存储库中的引用。存在的每个Git存储库都有自己的引用。所有Git共享提交(通过复制),但它们不一定共享所有引用
在更新了您自己的存储库的refs之后,BFG现在建议您清除Git的reflogs
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
git reflog expire --expire=now --all && git gc --prune=now --aggressive