首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决单一事件中的合并冲突?

如何解决单一事件中的合并冲突?
EN

Stack Overflow用户
提问于 2020-08-28 09:26:13
回答 2查看 902关注 0票数 0

假设以下情况:

backend

  • frontend开发人员无法解决后端代码中的合并冲突,

  • 后端开发人员无法在基于的工作流中解决合并冲突,其中前端和后端开发人员在相同的特性分支上并行工作。

当特性分支上的更改(由单独的开发人员创建)在后端代码和前端代码中发生冲突时,就会出现问题。单个开发人员(考虑到上述假设)无法单独进行更新-合并。

解决跨越前端和后端代码的合并冲突的最佳实践是什么?如果基于垂直特征分支的工作流是根本问题,那么在坚持前三个假设的同时,如何改进这种设置呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-29 00:50:47

有几种解决这个问题的典型方法:

  • 经常合并更改,并使用功能标记系统,这样就可以集成新的更改而不会变得活跃。这样,单个开发人员就可以对某一特性的不同方面进行工作并逐步合并,因此功能分支仅限于能够解决冲突的单个或少数开发人员-- individually.
  • Make特性分支作为单个开发人员特性分支的组合,并强制开发人员对各自的更改进行重新设置、解决冲突,然后将这些单独的开发人员分支重新集成到特性分支中。
  • 让来自每个区域的开发人员组合在一起进行冲突解决。

我个人经历了其中的第一个和最后一个,我更喜欢前者,但取决于您的工作流程,这可能是不可能的。例如,如果您有多个开发路线(例如,维护和开发分支),第一个解决方案不会解决所有的问题,但它可能会减少问题。

通常,您越能设计您的工作流,使开发人员必须解决的冲突与他们自己正在处理的代码相关,您就会越成功。即使同一区域的其他开发人员能够解决那里的冲突,处理一段代码的开发人员也能够更快地完成,并且更有可能正确地完成,因为他们目前正在那里工作。

一种可能的技术方法是使用git imerge并将增量产品存储在某个地方作为参考,然后让每个开发人员恢复存储状态。不过,这可能很棘手,虽然可能,但不推荐。

票数 2
EN

Stack Overflow用户

发布于 2020-09-01 20:44:58

这里有一种直截了当的技术方法,可以将合并冲突解决分为两个不同的部分:

来自frontend分支的

  1. ,创建两个虚假提交,一个只在backend上进行更改,一个只在backend上进行更改。

  1. 有两个开发程序将每个分支合并为

master

  1. feature合并为

  1. 将更改分成两部分:

代码语言:javascript
复制
# starting situation :
*--X--*--*--Z <- master      # X is the fork point
    \                        # Z is the tip of branch master
     \
      *--*--*--T <- feature   # T is the tip of branch feature

运行以下命令:

代码语言:javascript
复制
# from master, create a phony branch for backend :
$ git checkout -b backend master
$ git checkout X -- frontend/   # reset the content of 'frontend/' to its state in commit X 
$ git commit

# similarly for fontend :
$ git checkout -b frontend master
$ git checkout X -- backend/
$ git commit

你们现在有:

代码语言:javascript
复制
*--X--*--*--Z------
    \           \  \
     \           B  F  # B: tip of backend, F: tip of frontend
      \
       *--*--*--T

  1. feature中的两个部分合并:

代码语言:javascript
复制
$ git checkout feature
# have one developper fix conflicts on :
$ git merge backend
# and a second one on :
$ git merge frontend

注意:合并可以按任何顺序进行。

目前的情况是:

代码语言:javascript
复制
*--X--*--*--Z------
    \           \  \
     \           B  F
      \           \  \
       *--*--*--T--*--M <- feature

master

  1. 您现在可以将feature合并到feature

至于您的工作流,如果应该单独处理backendfrontend的工作,则需要有一些规则来在开发人员管理的分支中反映这一点。

@ on 2204在他的回答中给出了一些解决这个问题的方法:将后端的工作与前端的工作分开,尽快合并。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63631045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档