【问题标题】:Reverting merged branches with Git使用 Git 恢复合并的分支
【发布时间】:2012-07-06 12:45:07
【问题描述】:

通过我们的 Git 设置,我们拥有以下永久分支: - 掌握 |- 修复-x.x - 发布 - 开发

Develop 是我们的开发代码所在的地方。当我们几乎准备好“发布”时,它被合并到“发布”中,我们在最后一刻进行任何额外的更改,然后将其合并到“主”并用版本标记它。如果在旧版本中发现错误,我们会为其创建一个单独的分支,以便对其进行修复并赋予相关的版本标签。

我们犯了一个新手错误,我无意中将一些实验性代码合并到发布版中(这是基于开发的),然后在发布版合并到修复分支后不久,一位同事犯了类似的错误。所以发布和修复几乎是我们开发分支的副本。

我想返回,最好从历史记录中删除提交,因为这不是编码错误,而是合并时完全搞砸了。但我一直在挖掘,找不到一个明确的方法来使用 rebase 来做到这一点。我找不到如何运行 rebase 来列出我要删除的提交。我们在master中犯了这个错误似乎很容易。

感谢任何有关如何最好地从中恢复的建议。从那时起,这已经是几个提交,所以它们不在头脑中。

【问题讨论】:

    标签: git branch rebase


    【解决方案1】:

    我想我的答案在这里 - Revert back changes made by merge

    它没有提到变基。对于这种情况,也许 rebase 是不可能的。

    【讨论】:

      【解决方案2】:

      您可以像使用 git reset 的任何其他提交一样撤消合并提交。例如,如果您想删除 1、2 或 3 个提交,速记将分别为 git reset HEAD~1git reset HEAD~2git reset HEAD~3

      到目前为止,您一直在编辑本地提交树。如果要更新远程服务器,则必须执行git push --force(注意,force 标志可能是更多问题的根源)。

      由于其他开发人员可能已经取消了有问题的提交,因此由于您将更改远程服务器中的分支头引用,因此他们的 git 客户端可能会丢失跟踪。因此,他们再次获得一致副本的最简单方法是再次git clone repo。这就是您应该避免使用--force 标志的原因。当然,还有很多其他解决方案可以避免再次克隆所有内容。但它们更难解释并且取决于特定情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-27
        • 1970-01-01
        • 2018-05-28
        • 2021-10-24
        • 2021-11-03
        • 2015-09-09
        • 1970-01-01
        • 2011-06-21
        相关资源
        最近更新 更多