【发布时间】:2020-02-18 09:21:22
【问题描述】:
好的,所以我今天遇到了这种情况,我将另一个开发人员的一个分支合并到 master,他错误地将他的开发工作与他需要部署的更改一起合并到分支中。在我已经推送到远程(然后将其部署到一些生产服务器 - 它是在 uat 之后)之后,我尝试回滚合并,但因为我找不到共同的或初始的祖先而不能。
问题来了:
Dev 基于 master 创建一个新的分支,在工作和测试周期的过程中,定期将 master 合并到 dev 分支中,然后将分支推送到远程跟踪分支。大约 2 个月以来,每周都会发生这种情况。
与此同时,其他开发人员一直在将 master 合并到他们的分支中,然后将合并的分支合并回 master 以进行测试和部署。所以这个 devs 分支充满了他的工作提交以及 2 个月内所有其他 devs 提交的提交,即这个特定分支没有明确的祖先。
似乎不可能只回滚来自这个分支的更改,因为它已经在几个月的过程中例行地将 master 合并到它中(对于这个分支,项目总共是一年或 2 年)。我尝试了通常的方法来恢复合并和提交等。我无法重置,因为它已将 beeb 推送到原点。
有没有办法在这种情况下撤消合并?
【问题讨论】:
-
您的问题没有简单的答案。您将必须确定您不希望出现的合并,然后将其还原,否则您将不得不重新设置历史记录,然后重新应用来自其他开发人员的合并。我认为无论你采用哪种方法都会有很多工作。
-
@LasseVågsætherKarlsen 在合并 master 后,开发人员每周都会推送到远程(加上一些)。所以我可以尝试单独恢复每个提交,然后虽然 master 定期合并到? (听起来工作量很大:D
-
正如我所说,无论您选择哪种方法,您都会有很多工作要做。最好从历史的某个时间点建立一个新的、未受污染的分支,然后让开发人员为他正在实施的问题挑选他需要的提交。 IE。不要试图挽救现有的分支,而是尝试研究创建一个新分支需要什么。如果结果很难挑选,那么仅仅重新实现其中一些提交,甚至可能比修复现有提交更少的工作。