Git 我们如何处理拉取请求的合并问题

Git 我们如何处理拉取请求的合并问题,git,Git,我试图了解如何最好地处理拉请求的合并情况 我们以主分支的所有功能为基础。然后,我们创建一个发布分支来运行PR 我不知道如何解决的情况是,当我们先发布功能1,然后将功能2发布到发布分支中时 功能3与功能1存在合并冲突,因此根据我所阅读的内容,我们需要手动将发布合并到功能3分支,然后从功能3到发布分支执行新的PR 如果在测试了发布分支之后,我们发现功能1和功能2不会被部署,但是我们想要发布功能3。现在这是不可能的,因为这两个功能都合并到功能3中 到目前为止,我提出的最好的解决方案是制作一个“Feat

我试图了解如何最好地处理拉请求的合并情况

我们以主分支的所有功能为基础。然后,我们创建一个发布分支来运行PR

我不知道如何解决的情况是,当我们先发布功能1,然后将功能2发布到发布分支中时

功能3与功能1存在合并冲突,因此根据我所阅读的内容,我们需要手动将发布合并到功能3分支,然后从功能3到发布分支执行新的PR

如果在测试了发布分支之后,我们发现功能1和功能2不会被部署,但是我们想要发布功能3。现在这是不可能的,因为这两个功能都合并到功能3中

到目前为止,我提出的最好的解决方案是制作一个“Feature3-merge发行版”分支,但我对这个解决方案不是很满意。我应该如何处理这种情况


(上一次发生这种情况时,顺便说一句,这是我们在发行版中不需要的功能1-241)

让我们把它画出来。您有三个要素分支。在这里,它们都来自同一个提交,但这并不重要

      G - H [feature2]
     /
A - B - C [release]
    |\
    | I - J [feature1]
    \
     E - F [feature3]
您可以使用git log--graph--decoration--oneline看到这种可视化,但它是从上到下的

我不知道如何解决的情况是,当我们先发布功能1,然后将功能2发布到发布分支中时

那你就这样了

      G - H ---
     /         \
A - B - C - K - L [release]
    |\     / 
    | I - J
    \
     E - F [feature3]
      G - H ---
     /         \
A - B - C - K - L [release]
    |\     /     \
    | I - J       \
    \              \
     E - F -------- M [feature3]
功能3与功能1存在合并冲突,因此根据我所阅读的内容,我们需要手动将发布合并到功能3分支,然后从功能3到发布分支执行新的PR

那你就这样了

      G - H ---
     /         \
A - B - C - K - L [release]
    |\     / 
    | I - J
    \
     E - F [feature3]
      G - H ---
     /         \
A - B - C - K - L [release]
    |\     /     \
    | I - J       \
    \              \
     E - F -------- M [feature3]
如果在测试了发布分支之后,我们发现功能1和功能2不会被部署,但是我们想要发布功能3。现在这是不可能的,因为这两个功能都合并到功能3中

“分支”只是提交上的标签。你可以移动它们。这包括在合并发生之前将它们移动到。首先,在合并前重新建立
feature1
feature2

git branch feature1 J
git branch feature2 H

           [feature2]
      G - H ---
     /         \
A - B - C - K - L [release]
    |\     /     \
    | I - J [feature1]
    \              \
     E - F -------- M [feature3]
然后将
feature3
移回合并前的位置

git checkout feature3
git rest --hard F

           [feature2]
      G - H ---
     /         \
A - B - C - K - L [release]
    |\     / 
    | I - J [feature1]
    \ 
     E - F [feature3]
然后在合并
feature1
feature2
之前向后移动
release

           [feature2]
      G - H
     /
A - B - C [release]
    |\
    | I - J [feature1]
    \ 
     E - F [feature3]

现在,在任何合并发生之前,您已经回来了。现在,您可以将
feature3
合并到
release

中。如果功能1和功能2都将提交合并到功能3中,而功能3都合并到release分支中,那么简单地恢复功能1和功能2有什么错?还原操作还记录了您不希望在下一版本中使用这些功能的事实。首先,我不知道您可以还原功能,上次检查时,我必须从功能1和功能2还原提交。这很难做到,因为没有任何东西告诉我哪些提交属于您从
master
分支的功能,而是合并到
release
master
是如何更新的?在发布获得批准后,从一个发布版到另一个发布版进行pr,然后我们将master推入生产,并为下一个发布版创建一个新的发布版release@devzero那么“发布”实际上是“登台”还是“QA”?由于
master
release
production
最终将共享相同的历史,因此只使用
master
并使用标记跟踪QA和production的位置可能会更简单。这可能会很好地工作……但似乎不必要复杂。想象一下,你有20个功能而不是3个功能,其中10个需要合并,6个在测试后想要丢弃。重新建立原始分支将是一项艰巨的工作。@devzero如果您经常处于这种情况,那么您的流程就会出现严重问题。飞行中的20个特性表明您的项目可能过于单一;考虑把它分解成服务和图书馆。等待再次合并的10个功能表明过于单一,并且您的审阅/合并过程太慢。在合并和测试之后,需要同时丢弃6个特性,这表明您的需求过程有问题。考虑持续的整合。如果你发布一个关于改进流程LMK的问题,我不能不说更多的细节。我有5-6个开发人员,每个开发人员实现3-4个功能(这是每周的Sprint)。这是我需要集成的20个分支。使用合并这很容易,创建发布分支,将所有20个其他分支合并到发布分支中,如果20个分支中的任何一个被拒绝,删除发布分支并从批准的分支中创建新的发布分支。对于拉请求,这是一场噩梦,因为我必须在重做流程之前回滚所有合并的分支。我显然错过了一些东西,但我不太明白你说的是什么answers@devzero你不应该在那么少的开发人员和功能上遇到这些问题。我怀疑为什么,但我需要更多的细节来帮助。特别是为什么您经常拒绝约定和合并的功能。如果你发布了一个关于你的开发过程和你遇到的问题的问题,我很乐意看一看。在这里放一个链接。