首页 文章

如何将github存储库回滚到特定的提交?

提问于
浏览
363

我的github现在有100个提交 . 我需要回滚存储库以提交80,并删除所有后续的存储库 .

为什么?这个回购应该是从杂项用户合并 . 由于过度编辑,一堆合并作为我的提交进入 . 那是因为我的远程分支机构错误标记,其中3个开发人员被标记为彼此 . 我需要重置到那一点,然后向前拉 .

我想要改变,就像在这个例子中:How can I remove a commit on GitHub?

但是,git希望我做很多冲突管理 . 有更简单的方法吗?

4 回答

  • 14

    其他方式:

    检查要还原的分支,然后将本地工作副本重新设置为您希望成为远程服务器上最新版本的提交(之后的所有内容将再次出现) . 为此,在SourceTree中我右键单击并选择“将BRANCHNAME重置为此提交” .

    然后导航到存储库的本地目录并运行以下命令:

    git -c diff.mnemonicprefix = false -c core.quotepath = false push -v -f --tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME

    这将删除本地存储库中当前提交之后的所有提交,但仅删除该一个分支 .

  • 770

    要撤消最近的提交,我执行此操作:

    第一:

    git log
    

    获取最新的SHA ID以撤消 .

    git revert SHA
    

    这将创建一个与您的提交完全相反的新提交 . 然后,您可以推送此新提交以使您的应用程序处于之前的状态,并且您的git历史记录将相应地显示这些更改 .

    这对于你刚才所做的事情的立即重做是有好处的,我发现对我来说更常见 .

    正如迈克所说,你也可以这样做:

    git revert HEAD
    
  • 2
    git reset --hard <old-commit-id>
    git push -f <remote-name> <branch-name>
    

    注意:如下面的评论中所述, Using this is dangerous in a collaborative environment: you're rewriting history

  • 18

    当从master进行分支更新时,我注意到我有时会过度点击,并导致分支也合并到主服务器中 . 找到了撤消它的方法 .

    如果你的最后一次提交是合并,则需要更多的爱:

    git revert -m 1 HEAD

相关问题