考虑测试的团队git流
我们已经规划了一个git工作流,我们认为它可以很好地工作,但是遇到了问题 在SourceTree中 我们有4个主要分支机构考虑测试的团队git流,git,bitbucket,workflow,branching-and-merging,Git,Bitbucket,Workflow,Branching And Merging,我们已经规划了一个git工作流,我们认为它可以很好地工作,但是遇到了问题 在SourceTree中 我们有4个主要分支机构 \u dev(我们从中创建功能分支,每个功能分支对应一个JIRA任务) \u qa(一旦功能准备就绪并在\u dev上查看代码,我们将合并功能分支) \u下一版本(当某项功能获得QA批准时,我们将该功能合并到该功能分支中) master(当sprint结束时,我们将整个\u下一版本分支合并到该分支,从而仅合并批准的功能) 我们还有版本分支,在发布版本时,我们会将主分支合并到
谢谢首先,我要提醒你一句:如果你坚持这个工作流程,解决当前的问题,你将面临其他更微妙的问题。像这样的工作流,试图在开发生命周期的多个阶段返回到单个功能分支的合并,遇到了麻烦,因为它们忽略了不同分支上更改之间可能的交互 话虽如此,让我们关注一下你的一些问题。您的场景(带有插图)如下所示: 首先,您有
\u dev
和\u qa
分支。(为了简单起见,我们暂时把其他的放在一边。)
Dev1将feature1合并到_dev(假设此时它正在等待代码审查)
在这种情况下,git将在\u qa
和特性2
之间找到一个合并基,即一个共同的祖先。那将是B
。然后,它将“在B
和u qa
之间的更改”与“在B
和feature2
之间的更改”结合起来。同样,在B
和feature2
之间的更改包括feature1
所做的更改,因为feature2
是在M1
(即,feature1
之后的一个点被合并到中)
在所有情况下,要点都是一样的:在大多数情况下(包括合并期间),git不会将提交(或它们之间的增量)视为“属于”这个分支或那个分支。相反,它关心的是更改是否位于合并基础的路径上
git通常可以单独查看“来自分支”的更改的一种情况是重新基址
。然而,您的工作流需要进行重大检修才能利用这一点,这将导致其他复杂情况。这不是我在此推荐的路径
另一种修补工作流的方法可能是要求开发人员在\u dev
和\u qa
之间的合并基础上启动新的功能分支,但这可能只会让问题迎刃而解(除非更改始终“保持有序”)“一旦他们达到\u qa
,这不是一个合理的假设-尤其是如果qa发现缺陷)。此外,这增加了为一个功能完成的工作与为下一个功能完成的工作之间的隔离,最终意味着您可能要处理更多的合并冲突
无论如何,我认为这解决了你的为什么的问题。至于什么:
好吧,当您使用“git流”作为“分支和合并策略”的通用术语时,实际上,git flow是一种特定的分支和合并策略的名称。我建议您仔细阅读。您概述的需求并不是独一无二的,甚至不常见,因此,不要认为您必须自定义此流以满足这些需求,而是要研究人们如何使用此流满足这些需求。首先,请注意:如果您坚持使用此工作流并解决您当前的问题,您将面临其他更微妙的问题。像这样的工作流,试图在开发生命周期的多个阶段返回到单个功能分支的合并,遇到了麻烦,因为它们忽略了不同分支上的更改之间可能的交互 话虽如此,让我们关注一下您的一些问题。您的场景(带有插图)如下所示: 首先,您有
\u dev
和\u qa
分支(为了简单起见,我们暂时将其他分支放在一边)
Dev1将feature1合并到_dev(假设此时它正在等待代码审查)
在这种情况下,git将在\u qa
和特性2
之间找到一个合并基,即一个共同的祖先。这将是B
。然后,它将“B和之间的更改”与“B
和特性2
之间的更改”结合起来。同样,在<
A -- B -- C <--(_dev)(_qa)
A -- B -- C <--(_dev)(_qa)
\
D -- E <--(feature1)
(_qa)
|
A -- B -- C ------ M1<--(_dev)
\ /
D -- E <--(feature1)
(_qa) F -- G <--(feature2)
| /
A -- B -- C ------ M1<--(_dev)
\ /
D -- E <--(feature1)
(_qa) F -- G <--(feature2)
| / \
A -- B -- C ------ M1 ------ M2 <--(_dev)
\ /
D -- E <--(feature1)
Q <--(_qa) F -- G <--(feature2)
/ / \
A -- B -- C ------ M1 ------ M2 <--(_dev)
\ /
D -- E <--(feature1)