【问题标题】:revert the git last commit and save it in a different branch恢复 git 上次提交并将其保存在不同的分支中
【发布时间】:2013-11-30 17:33:45
【问题描述】:

有没有办法回滚最后一次提交并将其放入单独的分支以供以后测试?我做了一些我不想完全丢弃的更改,我只想将它们放在不同的分支中以供进一步测试。

谁能帮我解决这个问题?

【问题讨论】:

    标签: git git-branch git-commit git-reset


    【解决方案1】:

    您可以分两步完成此操作,而无需在分支之间切换。我们开始吧。

    1. 从当前分支创建一个新分支,以保留当前状态:

      git branch feature_maybe
      
    2. 恢复当前分支的最后一次提交:

      git reset --hard HEAD^
      

    【讨论】:

      【解决方案2】:

      是的,您可以实现这一点 - 从当前分支分支并创建一个新分支以保留提交,检出回原始分支,然后回滚原始分支中的提交。

      因此,从您当前的分支(我们称之为current)创建并签出一个新分支separate

      git checkout -b separate
      

      这将create a new branch separate 将有新的提交。现在回到原来的分支

      git checkout current
      

      在这个分支上,你现在可以rollback the last commit

      git reset --hard HEAD~1
      

      如果您稍后想要访问那个较旧的提交,则必须执行 git checkout separate 并且该提交应该在该分支中可用。

      【讨论】:

      • anash0l 该方法在本地运行良好,但是当我尝试推送到 github 时它没有通过.. 知道缺少什么吗?
      • @MoJ.Mughrabi 您是否已经推送到 github(在执行这些操作之前)?其他人可以参与更改吗?
      • @anash0l 是的,我做到了,但我有部署脚本试图拉,他们看不到新的还原操作。当我使用“push -f”将更改传递到 github
      • @MoJ.Mughrabi 好的,你也要推送分支separate 吗?在这种情况下,请执行git push origin separate。这也应该在 github 上创建一个新分支 separate
      【解决方案3】:

      是的 - 使用 git checkout -b <new branch name> 签出新分支,使用 git checkout <original branch name> 切换到原始分支,然后执行 git reset --hard HEAD~1 将原始分支移回提交。 (与往常一样,在移动分支时,使用gitk 之类的程序逐步可视化您正在做的事情是最安全的。)

      【讨论】:

        猜你喜欢
        • 2020-03-01
        • 2021-11-03
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 2014-07-17
        • 2018-12-19
        • 2023-01-11
        相关资源
        最近更新 更多