Git 重置 - 提交在 Github 上仍然存在

标签 git github version-control

我有 2 个分支,master 和 develop。在我的开发分支上,我做了一些提交并推送到 Github,假设它看起来像 A-B-C-D-E。重要的是,我在 Github 问题中引用了其中一个提交 C

但是,我需要从本地和远程历史记录中删除提交 C,并且我可以在中丢失提交 DE过程。本质上是将历史重置回 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 的工作原理。这很傻。即使您确实重置了分支以提交 BC D E 提交仍然作为存储库对象数据库中的对象存在。如果你真的想摆脱它们,你应该删除提交引用的文件以及它们指向的树。我很确定有一个命令(可能是一些 ref-log 操作和缓存过期)

然而,要真正摆脱提交(我在这里可能弄错了),您还必须重新创建存储库,因为您没有推送提交的删除。

关于Git 重置 - 提交在 Github 上仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44821876/

相关文章:

Git Merge vs Rebase - 解决冲突

Github - 在提交消息中创建指向我的 JIRA 问题的链接

github - Jenkins github 拉取请求构建器插件未发布到 github

还显示远程库的 Git merge 工具

linux - 如果只能执行 Windows 批处理脚本,为什么 bash 脚本需要执行位?

git - 如何验证和显示 git 提交消息的错误?

macos - (Mac) -bash : __git_ps1: command not found

python - 将 curl PUT 转换为 Python 请求的问题 : "Problems parsing JSON"

c# - 对于 Silverlight 4 Visual Studio 解决方案,版本控制需要什么?

text - 使电子表格以人类可读的格式保存以进行版本控制