【发布时间】:2021-12-22 21:30:21
【问题描述】:
最近我们发现来自我们的一位前团队成员的两个旧 git 提交,这是恶意的并影响了我们的整个存储库。第一次提交从存储库中删除了所有文件,第二次提交将所有文件添加回存储库。因此,代码库没有任何变化,我们花了几天时间才注意到。
提交是几周前的,与此同时,我们有超过 100 次其他团队成员的新提交,并且不同分支之间有 10/15 次合并。现在是否可以从 git repo 中完全删除该提交?
我们想到的一个选项是变基,但由于合并和合并冲突,我们发现它非常困难。解决此问题的最佳行动方案应该是什么?
【问题讨论】:
-
删除所有内容的提交,紧跟其后的提交还原所有内容,对使用存储库没有影响。你最好还是把它留在里面,前提是它确实可以恢复一切。
-
要删除相邻的提交,请使用
git replace,后跟git filter-branch或git filter-repo。请注意,生成的存储库替换旧存储库:每个人都必须切换到使用新存储库并停止使用所有现有的克隆。这就是为什么最好把它留在里面。