2017-06-29 175 views
0

我有2个分支,主和发展。在我的开发分支上,我做了一些提交并推送到Github,让我们说它看起来像A-B-C-D-E。重要的是,我所引用的提交C的一个在Github的问题Git重置 - 提交仍然存在Github

不过,我需要删除从本地和远程历史提交C,和我确定失败的承诺D并在这个过程E。基本上将历史记录重新设置为B。我通过硬重设为B,然后强制推送到Github。然后我继续工作,添加并推动另一次提交F,认为一切正常。所以分支现在看起来像A-B-F

在本地和Github上查看分支的状态,一切似乎都没问题。在这两个地方开发现在只是A-B-F。然而,似乎在提交C-D-E依然存在,因为当我看着Github上的问题,它仍然引用C,我可以通过点击看到整个提交,并在该时间回购所有文件提交

我不能确定为什么发生这种情况,因为当我做了git log --graph我只看到A-B-F

鉴于我已经做了硬复位和力推,我现在能做些什么来消除正确提交C-D-E来自我的本地回购和Github上?

+0

您使用的URL格式是什么?我使用'https:// github.com/account/repo/commit/95bcd184322e56e4f7a69ab8e991bc3f518504fe'这样的格式,它显示404未找到。 –

+0

它实际上并不是提交的直接链接。它在提交消息中被引用,该github自动检测并直接创建问题引用 – Simon

回答

0

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

但是,要真正摆脱提交(我可能在这里弄错了),您必须重新创建存储库你不会推卸掉提交。

0

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

承诺C你可以在github中发现问题是它引起的问题。即使这个提交在github中被删除了,但它总是被列出来给实体提供关于这个问题的信息。