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

时间:2018-08-29 07:50:45

标签: git git-branch git-merge git-commit

我合并了一个分支,说developer到另一个分支,说main

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

我使用了remove branch选项,该选项创建了一个合并请求,但不包括我对main分支所做的更改。我合并了此请求,并且main分支不再包含对developer的更改,而developer分支则保持原样。

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

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

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

1 个答案:

答案 0 :(得分:0)

您必须采取的步骤可以总结如下(请注意,我将首先概述您可能想要的方式,然后再概述所需的步骤):< / p>

这是您应该如何做:

  1. 从主目录创建并签出新的临时分支以稳定合并

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

    git revert SHA-OF-PREVIOUS-REVERT
    
  3. 如果您在原始合并后对开发人员进行了进一步的更改,则也可以将开发人员合并到这个新的临时分支中

    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. 如果您在原始合并后对开发人员进行了进一步的更改,则也可以将开发人员合并到主分支中

    git merge developer
    
  3. 验证(如有必要)


如果您的情况仅仅是您在原始合并后没有对开发人员进行任何更改,则只需执行以下操作:

  1. 还原主分支上的还原

    git revert SHA-OF-PREVIOUS-REVERT
    

并称之为一天。