如何从git历史记录中完全删除提交

如何从git历史记录中完全删除提交,git,Git,我必须从本地git回购中删除最后5次提交,我是通过reset--hard向新的头提交来完成的: git reset --hard abcde1 现在,我需要从历史记录中删除这些未引用的提交,在阅读了这里的许多答案后,我尝试运行以下内容 git gc --prune=now 及 我找到的答案似乎都不适合我,例如,我仍然可以看到一个带有git show的提交,我在这里遗漏了什么?是否可以从历史记录中完全删除提交 最后,如果我推送到一个新的原点(假设这是一个全新的回购协议),这些未引用的提交是否也

我必须从本地git回购中删除最后5次提交,我是通过
reset--hard
向新的头提交来完成的:

git reset --hard abcde1
现在,我需要从历史记录中删除这些未引用的提交,在阅读了这里的许多答案后,我尝试运行以下内容

git gc --prune=now

我找到的答案似乎都不适合我,例如,我仍然可以看到一个带有
git show
的提交,我在这里遗漏了什么?是否可以从历史记录中完全删除提交


最后,如果我推送到一个新的原点(假设这是一个全新的回购协议),这些未引用的提交是否也被推送到原点?

未引用或孤立的提交不会被推送到原点。这些提交将在某个时候被git的垃圾收集删除。如果要强制垃圾收集,请执行此操作

git config gc.reflogexpireUnreachable = now
git gc --prune=now
git config gc.reflogexpireUnreachable = "2 days"
看看它有关于如何完全删除资源的好资源。然而,我认为你关于推动一个新的起源的问题导致了一个更简单的解决方案

未在正在推送的分支的提交中引用的对象不会发送到服务器。我建议将repo中的一个文件克隆到一个干净的目录中,从您现有的文件中提取,然后推送到您想要的任何目的地。它将为您提供一个干净的.git目录,其中只包含被引用的对象。

您真的想从历史记录中“删除”吗?你可以这么做,但如果有人已经做出了改变,那么他们将在历史上度过一段有趣的时光

所以,你可能想做的是

git reset --hard <sha1-commit-id>//the commit you want to get rid of
git push origin HEAD --force
git reset--hard//您想要摆脱的提交
git推原点头——力
在执行此操作之前,请进行备份!
同样,如果有人已经撤销了您的更改,那么请准备好聆听恐怖故事。

嘿,Guillermo,是的,我想修改回购历史记录,我知道我正在尝试做的事情的含义。谢谢你的回答!
git reset --hard <sha1-commit-id>//the commit you want to get rid of
git push origin HEAD --force