如何恢复GIT中的错误修复?

如何恢复GIT中的错误修复?,git,Git,我肯定有很多GIT用户遇到了这个问题: 从主节点创建一个分支。让我们称之为featureX 在某个地方,在处理featureX的过程中,您意识到您想要修复以前的提交: 你提交你的修复 你做你的重基和挤压/修复 稍后,您希望对您的主机重新设置基础,以将最新的更改合并到featureX中 事情破裂是因为你的树枝分叉了(在master中没有进行修复)。你今天过得不好 这是第二次发生在我身上。第一次,我在featureX方面没有太多的历史,只是在master上做了一个新的分支你对此有什么看法?您将如

我肯定有很多GIT用户遇到了这个问题:

  • 从主节点创建一个分支。让我们称之为featureX
  • 在某个地方,在处理featureX的过程中,您意识到您想要修复以前的提交:
    • 你提交你的修复
    • 你做你的重基和挤压/修复
  • 稍后,您希望对您的主机重新设置基础,以将最新的更改合并到featureX中
  • 事情破裂是因为你的树枝分叉了(在master中没有进行修复)。你今天过得不好
  • 这是第二次发生在我身上。第一次,我在featureX方面没有太多的历史,只是在master上做了一个新的分支你对此有什么看法?您将如何解决此问题?是否可以将git重置为某个reflog?在这种情况下,我可以撤消重基并将修复提交移回featureX的顶部(使用交互式重基)


    我确信有不同的方法可以解决这个问题,但我想这是一个常见的问题。

    是的,您可以将任何分支重置为以前签出的任何分支(reflog)。因为您的修复程序仍在FeatureX中,所以重新基础的行为与您不进行修复时的行为没有什么不同-只有当主程序的分歧与FeatureX分支中的任何提交冲突时才重要-修复程序与否


    第二,当人们第一次学习git时,他们爱上了令人敬畏的重定基调。但我又回到了合并。更简单的是,它记录了历史的发生,并强制执行一些纪律。这是我的工作流程:

    谢谢您的回答!但是,由于在错误的重新基址之后进行了其他更改(在reflog中),我不想简单地回到重新基址之前。我宁愿把那个特别的重基拆开。换句话说,我可以重新设置reflog的基础吗?:)我目前手头没有代码库,但可以在10小时左右尝试。关于一般的重定基期;我将功能合并回集成分支。当我想将最新的集成分支更改同步到功能分支时,我会重新设置基础。这不是你要做的?你必须了解再基础的作用。它为您要移动到另一个起点的所有提交生成修补程序。然后一个接一个地应用它们。要“撤消”重基,只需再次重基,但指定要从何处开始该范围的提交。语法如下:
    git-rebase--on-new-start-start-of-range-end-of-range
    。不,我很少重定基址。如果你仔细阅读我的文章,你会发现我从同一点开始每一项工作或功能。从这里开始,任何操作都是将功能合并到两个特殊的分支中,这些分支有时可以重置。您需要彻底了解历史是如何存储在git中的。