我有 2 个分支,master 和 develop。在我的开发分支上,我做了一些提交并推送到 Github,假设它看起来像 A-B-C-D-E
。重要的是,我在 Github 问题中引用了其中一个提交 C
但是,我需要从本地和远程历史记录中删除提交 C
,并且我可以在中丢失提交 D
和 E
过程。本质上是将历史重置回 B
。我通过硬重置到 B
来做到这一点,然后强制推送到 Github。然后我继续工作,添加并推送另一个提交 F
认为一切正常。所以分支现在看起来像 A-B-F
查看本地和 Github 上分支的状态,一切似乎都正常。 Develop 现在在这两个地方都只是 A-B-F
。但是,似乎提交 C-D-E
仍然存在,因为当我查看 Github 问题时,它仍然引用 C
我可以点击查看整个提交和所有文件该提交时的 repo
我不确定为什么会这样,因为当我执行 git log --graph
时,我只看到 A-B-F
鉴于我已经完成了硬重置和强制推送,我现在可以做些什么来从我的本地存储库和 Github 上正确地消除提交 C-D-E
?
最佳答案
这就是 git 的工作原理。这很傻。即使您确实重置了分支以提交 B
,C D E
提交仍然作为存储库对象数据库中的对象存在。如果你真的想摆脱它们,你应该删除提交引用的文件以及它们指向的树。我很确定有一个命令(可能是一些 ref-log
操作和缓存过期)
然而,要真正摆脱提交(我在这里可能弄错了),您还必须重新创建存储库,因为您没有推送提交的删除。
关于Git 重置 - 提交在 Github 上仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44821876/