永久删除Git中的一个旧提交

时间:2012-11-12 21:09:31

标签: git github

大约两个月前,我的一位同事将他的虚拟环境添加到我们的Git仓库并推送它。

我在后续的提交/推送中将其删除并将其添加到.gitignore。

然而,从那时起,我们已经有大约500次提交。

有没有办法可以从Github和我们的本地回购中完全删除他原来的90k行提交,而不会造成任何问题?

2 个答案:

答案 0 :(得分:3)

Github有help page on removing sensitive data也适用于您的情况(只有少数Github特定部分可以忽略)。

好消息是可以删除旧提交。

坏消息是,可能会给协作者带来麻烦,除非您能够非常有效地沟通存储库的整个历史记录将会发生变化。他们需要根据新的历史改变他们所有的工作分支。

答案 1 :(得分:3)

您可以在问题之前从提交创建分支,并在问题之后的第一次提交中创建分支。然后将第二个重新加入第一个。然后,如果您将主服务器重置为指向该分支的新提示,并将所有引用删除到另一行,GC将最终销毁这些项目。

当然,你可能想要在之后重新克隆每个人的回购,因为这是一个侵入性的变化,涉及更新很多引用(假设你的描述,回购中发生了很多事情,因为这个)。