2017-02-20 170 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 

将新的分支引用推送到远程存储库,无论它是否快进。