2017-06-29 169 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中被刪除了,但它總是被列出來給實體提供關於這個問題的信息。