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

时间:2017-06-29 09:54:10

标签: git github version-control

我有两个分支,掌握和发展。在我的开发分支上,我做了一些提交并推送到Github,让我们说它看起来像A-B-C-D-E。重要的是,我在Github问题中引用了其中一个提交C

但是,我需要从本地和远程历史记录中删除提交C,并且我在此过程中会丢失提交DE。基本上将历史记录重置为B。我通过对B进行硬重置来做到这一点,然后强制推送到Github。然后我继续工作,添加并推送另一个提交F,认为一切正常。所以分支现在看起来像A-B-F

在本地和Github上查看分支的状态,一切似乎都可以。两个地方的发展现在只有A-B-F。但是,似乎提交C-D-E仍然存在,因为当我查看Github问题时,它仍然引用C,我可以点击查看整个提交以及当时repo中的所有文件提交

我不确定为什么会发生这种情况,因为当我执行git log --graph时,我只会看到A-B-F

鉴于我已经完成了硬重置和强制推送,我现在可以做些什么来正确地从我的本地仓库和Github上消除提交C-D-E

2 个答案:

答案 0 :(得分:0)

这就是git的工作原理。这很愚蠢。即使您确实将分支重置为提交BC D E提交仍然作为存储库对象数据库中的对象存在。如果你真的想摆脱它们,你应该删除提交引用的文件以及它们指向的树。我很确定有一个命令(可能有一些ref-log操作和缓存到期)

然而,为了真正摆脱提交(我可能会在这里弄错),您也必须重新创建存储库,因为您不会推迟删除提交。

答案 1 :(得分:0)

您确实从提交历史记录中删除了提交C-D-E,您可以通过查看https://github.com/account/repo/network的提交历史记录来仔细检查。

您在github问题中可以找到的提交C导致它与该问题相关。即使这个提交在github中被删除了,但它总会被列出来给实体提供有关此问题的信息。