【问题标题】:git commited and pushed to the wrong branchgit commit 并推送到错误的分支
【发布时间】:2016-08-01 16:07:59
【问题描述】:

我在版本分支V4.15.0 工作,在我做了一些应该转到master 分支的小改动之后,我提交并推送。

纠正这个错误的最佳方法是什么?有没有办法可以将提交从V4.15.0 移动到master,而无需删除提交?

【问题讨论】:

    标签: git


    【解决方案1】:

    首先我们需要修复 V4.15.0 分支。有两种可能的方法。

    git revert 是最简单的方法。当给定一个提交 id 时,revert 将在历史记录中创建其反向作为新提交。

    git checkout V4.15.0
    git revert HEAD
    

    如果您不希望历史记录显示您的错误,则必须使用push --force 重置历史记录。请注意 it is usually a bad practice 重写非用户分支中的历史记录,因此某些存储库管理器永远不允许 --force 在它们上使用。但在您的情况下可能是可以接受的,请使用您的工作流程策略进行验证。

    # checkout the original V4.15.0 branch
    git checkout commit_before_mistake_V4.15.0
    # we are now detached from HEAD, so checkout a new branch
    git checkout -b fixed_branch
    # force push, this rewrites history
    git push fixed_branch:V4.15.0 --force
    

    现在我们必须将提交移动到主分支。

    幸运的是,使用以上两种方法中的任何一种都不会删除错误的提交。记住它的 id,您可以使用 git cherry-pick id 将该提交添加到任何其他分支。

    git checkout master
    git cherry-pick id
    

    【讨论】:

    • 值得一提的是,重写历史可能是危险的,不鼓励这样做。见this SO post
    • 是的,我为此添加了一条通知。谢谢。
    【解决方案2】:

    您需要做两件事。首先,在您不希望提交的分支上恢复提交。其次,挑选你想要的提交到正确的分支。

    摘樱桃快乐!

    【讨论】:

      猜你喜欢
      • 2019-08-10
      • 2022-01-18
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多