首页 > 解决方案 > 删除 Git/Github 中的分支时,旧代码仍在 repo 中吗?

问题描述

我想从安全的角度来看,我是否在 Git 中有一个稍后会删除的分支。在那个分支中,如果我有只发生在那个分支中的代码,并且在那个分支中我有提交删除它。然后,我删除了 GitHub 上的那个分支,被删除的代码是否还在 GitHub Repo 中?

在我看来,Git 中没有历史记录,并且自从它被删除后就无法返回该分支,但不确定它是否真的消失了。

标签: gitgithub

解决方案


分支只是指向存储库中提交的指针。当您删除一个分支时,它只会删除该指针。稍后可以恢复分支和提交,因此如果您需要完全删除某些文件或数据,则需要修改提交历史记录。

有几种方法可以在不完全丢失您的历史记录的情况下做到这一点。

BFG 回购清洁剂

https://rtyley.github.io/bfg-repo-cleaner/

“BFG 是 git-filter-branch 的一种更简单、更快速的替代方案,用于从 Git 存储库历史记录中清除不良数据:

删除疯狂的大文件 删除密码、凭证和其他私人数据 git-filter-branch 命令非常强大,可以做 BFG 不能做的事情 - 但 BFG 对于上述任务要好得多,因为:

更快:快 10 - 720 倍更简单:BFG 并不是特别聪明,但专注于使上述任务变得简单美丽:如果需要,您可以使用漂亮的 Scala 语言来自定义 BFG。至少在某些时候,它必须比 Bash 脚本更好。” - BFG 文档

git-过滤器分支

https://git-scm.com/docs/git-filter-branch

“让您通过重写 <rev-list options> 中提到的分支来重写 Git 修订历史,对每个修订应用自定义过滤器。这些过滤器可以修改每棵树(例如删除文件或对所有文件运行 perl 重写)或信息关于每个提交。否则,所有信息(包括原始提交时间或合并信息)将被保留。- git 文档

Github 敏感数据删除政策

https://help.github.com/en/github/site-policy/github-sensitive-data-removal-policy

我认为这并不是您真正想要的,但它确实为您提供了选择,以防万一。

“我们提供敏感数据删除流程,以便在 DMCA 流程不适用的某些特殊情况下删除这些敏感数据,例如当您的安全受到暴露密码的威胁并且您不拥有您的特定内容的版权时需要删除,或者内容不受版权保护。” - GitHub 文档


推荐阅读