如何从git存储库中完全删除/销毁提交?

时间:2012-07-19 06:29:10

标签: git dvcs

从表面上看,这似乎与关于改变git repos历史的一百万个类似问题相同,但我相信我的情况有点不同,我找不到适用于我的解决方案。

我有一个git存储库,有一次,其中一个程序员不小心地从不同的存储库中引入了代码,并且该(以前不相关的)存储库的整个历史记录现在是我的存储库提交日志的一部分。

查看提交内容,非常清楚的是从先前无关的回购中“引入”此历史记录的确切提交。

在上述提交之后,我们没有触及任何这些文件。

我想从我的存储库中完全销毁所有这些无关的提交。我不介意我是否必须通过提交来提交,但我希望我的repo能够真正反映我们自己的代码。

如果有帮助,结构是这样的:

  • 在1234之后提交(更近期),请勿触摸1234中引入的任何错误文件

  • 提交1234 - 有几个与我们的代码库相关的文件,并且还合并了无关回购的整个历史记录

  • 在1234之前提交(早些时候)现在我们自己的提交和无关回购的提交。

    < / LI>

1 个答案:

答案 0 :(得分:3)

您需要进行交互式rebase:

git rebase -i <hash-of-the-commit-1034>~

从列表中删除提交1034。运行git垃圾收集器:

git gc

推入上游:

git push -f

这将从您的仓库中清除提交1034。