2017-02-20 199 views
1

我有興趣恢復推送提交,但也從圖中刪除它。
例如我有:git revert刪除提交

    tag 
A <— B <— C <— D <— E <— F 
          HEAD 

我想刪除F完全,所以我的圖表看起來像:

    tag 
A <— B <— C <— D <— E 
        HEAD 

我怎樣才能做到這一點?

+0

git reset --hard HEAD〜1 – 0andriy

+4

爲了記錄,此操作是歷史重寫操作。因此,如果您已經推送了提交,而其他人已經推送了它並且您現在推送 - 強制提交(您明確必須執行的操作),那麼您將摧毀遠程歷史記錄。 – ckruczek

回答

1

嘗試重寫歷史記錄是錯誤的。

克隆/拉動它的人將很難整合你的變化,並最終推回你想要刪除的變化。

最好還原一次提交,它會在您的歷史記錄中追加一個「否定」提交。

git revert F 

而只是把它

git push origin master 

如果你知道自己在做什麼,或者不在乎打破一切,你可以改寫歷史:

git reset --hard HEAD^ 

將索引移回父提交(E)

git push --force 

將新的分支引用推送到遠程存儲庫,無論它是否快進。