描述:
这次被第三方扫到有资安问题,此项目已有几千次commit,发现第435次被员工上传敏感资料 + 几次commit message也有问题
个人知识:
我个人只会覆盖最新一笔的救援方式,想不到如何无害解决此问题
能想到解决方式:
最差情况可能需要狠下心全部git重来,但之后无法再查之前 history
上传的敏感资料是否有多次变更?
commit 435
的时候提交了,可以在 435
之后创建一个分支,把对应的敏感文件目录添加到 .gitignore
中,把敏感目录移出项目目录,然后把 .gitignore
的修改和敏感文件目录的 remove
记录提交。最后把主线分支 rebase
到你创建的新分支上面。最后再用 rebase
把新的 Commit 用 squash
合并到 commit 435
中。这样敏感文件的commit历史就没有了。如果你的敏感文件有很多次修改。那么Git的推荐修改方式是使用 git-filter-repo
至于Commit Message 你直接在 rebase
的过程中选择对应的提交记录把标识从 pick
改成 edit
就可以修改了。在操作的过程中 Git 会在终端提示你如何操作。
最后完成之后需要 git push -f
强制推送到远端。所以你如果不是特别熟悉 rebase
的话,最好把原始分支做一个备份再进行 rebase
(默认你不知道怎么找已经被 drop
掉的提交记录 hash
值)
GitHub 上的项目记录(commit history)是公开和不可变的,一旦提交到仓库,就无法直接删除。这是因为 Git 的设计哲学之一就是保持数据的完整性和可追溯性。
然而,有几种方法可以处理你所描述的问题:
使用 git-filter-branch
或 BFG Repo-Cleaner
来重写历史
你可以使用 git-filter-branch
或更现代的 BFG Repo-Cleaner
工具来重写 Git 历史。这些工具允许你删除或修改特定的提交,但请注意,这会改变项目的历史,可能导致与其他克隆或分支的不一致。
使用 BFG Repo-Cleaner
的例子(假设你想删除包含敏感信息的文件):
java -jar bfg.jar --delete-files your-sensitive-file.txt your-repo-dirgit reflog expire --expire=now --all && git gc --prune=now --aggressivegit push origin --force --all
在执行这些操作之前,请确保你完全理解它们的影响,并备份你的仓库。
创建一个新的分支或仓库
如果重写历史的风险太高,你可以考虑创建一个新的分支或仓库,并只包含没有问题的提交。这样,你可以保留原始仓库的历史记录,同时在新仓库中提供一个干净的版本。
修改最新的提交以修复问题
如果你只是想修复最近的几次提交(例如,修改 commit message 或回滚某个包含敏感信息的提交),你可以使用 git commit --amend
或 git revert
来实现。但这不会删除原始提交,只是添加新的提交来覆盖或撤销它们。
从记录中删除敏感信息
如果敏感信息只是存在于某个文件的某个版本中,你可以使用 git filter-branch
或 BFG Repo-Cleaner
来删除那个文件的所有历史记录,或者只删除包含敏感信息的那个版本。但同样,这会改变项目的历史。
通知相关人员
除了技术上的处理,你还需要通知所有相关人员(包括团队成员和其他可能接触到该项目的人)关于这个问题,并告知他们如何更新到修复后的版本。
防止类似问题再次发生
最后,确保建立和维护良好的安全实践和代码审查流程,以防止类似的问题再次发生。
请注意,直接修改或删除 Git 历史记录可能会带来风险,特别是在与其他开发者或系统集成的情况下。在执行任何操作之前,请确保你完全理解这些风险,并考虑与团队或组织中的其他成员进行沟通。
但是建议的解决方案对我来说都不起作用。我从sqlite数据库中的RecycerView列表项,当我向左滑动时,相应的数据将成功地从数据库中删除。由于某些原因,昨天一切都工作得很好,删除的项从列表中消失了,但从今天开始,该项在RecycerView中仍然可见。下面是我的代码:
每个人 我不知道是否已经有人问过这个问题,但我到处找,但找不到。我正在使用GitHub进行Intellij IDEA项目。我在工作中使用我的台式计算机来开发。完成后,我在Github上做了一个提交,它直接在我的帐户上。但是,有时我想在家里继续使用笔记本电脑,使用同一个项目并修改和提交它。由于不太了解Github与Intellij的集成,我知道我可以将现有项目下载到本地计算机上。但我的问题是,如何更
安德鲁·K
我已经在GitLab中创建了几个存储库。其中一个是为了测试目的,有一些提交和分支。我想删除或删除此存储库。我该怎么做呢?
本文向大家介绍Android studio 如何删除项目 module,包括了Android studio 如何删除项目 module的使用技巧和注意事项,需要的朋友参考一下 在Android Studio中想要删除某个module时,在Android Studio中选中module,右键发现没有delete,如图: Android Studio对module做了一个保护机制,module是不能随
有什么方法可以立即删除GCP项目吗?