Git 请求中没有可用于合并的提交

No commits available for merging in the Git request

我合并了一个分支,假设 developer 到另一个分支,假设 main.

然后我意识到 developer 中的更改并不意味着在 main 中可用。

我使用 remove branch 选项创建了一个合并请求,排除了我在 main 分支中的更改。我合并了这个请求,main 分支不再包含来自 developer 的更改,而 developer 分支保持原样。

但是,几天后我希望这些更改在 main 中可用,我尝试创建从 developermain 的新合并请求。此请求显示没有要合并的提交。

也许该提交早先已合并到 main 分支中,并且 Git 现在不将它们识别为新提交(尽管它们已被还原)。

现在将 developer 中可用的更改合并到“main”的方法是什么?

您必须采取的步骤可以概括如下(请注意,我将首先概述您可能想要执行的方式,然后概述需要的步骤):

以下是您应该如何操作:

  1. 从 main 开始,创建并签出一个新的临时分支以稳定合并

    git checkout main
    git checkout -b temp-merges
    
  2. 还原你的还原,在这个新分支上

    git revert SHA-OF-PREVIOUS-REVERT
    
  3. 如果原合并后developer有进一步的变化,也可以将developer合并到这个新的临时分支

    git merge developer
    
  4. 验证最终结果,它满足您的任何验收标准,例如 运行 单元测试、构建代码、确保没有合并冲突等。
  5. 最后将临时分支合并到main中,接受结果

    git checkout main
    git merge temp-merges
    
  6. 删除临时分支

    git branch -d temp-merges
    

现在,这允许您在最终合并到 main 之前验证结果。

在最终合并之前,这是您的分支的外观

        developer
            v
1--2--3--4--5--------------------+
       \                          \
        \                 (-(-D))--G 
         \               /         ^
          \             /      temp-merges
  A--B--C--D--(-D)--E--F
                       ^
                      main

如果您不需要这样做,或者可以在推送之前在主分支上本地执行,所需步骤很简单:

  1. 还原还原,在主分支上

    git revert SHA-OF-PREVIOUS-REVERT
    
  2. 如果你在原合并后对developer有进一步的改动,你也可以将developer合并到主分支

    git merge developer
    
  3. 验证,如有必要


如果你的情况只是原始合并后你对开发者没有任何改变,你只需要做:

  1. 还原还原,在主分支上

    git revert SHA-OF-PREVIOUS-REVERT
    

收工。