【问题标题】:Completely undo commit and push to remote [duplicate]完全撤消提交并推送到远程[重复]
【发布时间】:2020-01-18 13:31:39
【问题描述】:

[编辑:这个问题的答案抛弃了历史,如果这不是你想要的,那么忽略这个问题]。

[编辑:CodeWizard 指出重复的答案不是重复的,因为这个问题清楚地表明我想丢弃历史。此外,该问题中没有一个答案几乎与该问题收到的答案一样好]

我刚刚提交并推送了一些完全错误的代码。

我想完全退出该提交并推送,因为它从未发生过。

我不希望代码留在提交历史记录中。

没有人做过任何其他的提交和推送。

这个问题是不同的,因为我要求人们不要发布替代方案,除非他们实现完全相同的目标(丢弃所有历史记录)。原因是:我试图用谷歌搜索这个问题,但我得到的问题与提供替代方案的答案杂乱无章,但不清楚这些替代方案是丢弃代码还是将代码保留在 git 提交历史记录中。

这个问题仅限于: 1) 仅丢弃最后一次提交/推送。 2)所有历史都是关于提交/推送从回购中消失的。

我将这些限制放在上面,以便我们得到最简单的答案。

我正在使用 git 命令行和乌龟 git 对抗 gitlab。

【问题讨论】:

    标签: git gitlab


    【解决方案1】:

    您承认改写历史的危险。 Soo... 这会将 master 移回一次提交。

    git push -f origin master~:master 
    

    其他方法是重置 HEAD

    git checkout master
    git reset --hard HEAD~
    git push origin -f master
    

    【讨论】:

    • 分解命令会很有用,以便 OP 或其他人可以根据需要对其进行调整。 -f 使其成为强制推送,告诉远程仓库(在这种情况下为origin)无论如何都要接受你给它的东西。 origin 当然是您要推送到的遥控器的本地名称。还要解释一下master~:master——如果你从/向不同的分支推送,显然你会在那里放一些别的东西。
    猜你喜欢
    • 1970-01-01
    • 2013-05-25
    • 2023-04-09
    • 2020-06-12
    • 1970-01-01
    • 2014-05-06
    • 2020-06-30
    • 2020-11-27
    相关资源
    最近更新 更多