V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wxsm
V2EX  ›  程序员

Gitlab 在线冲突解决工具做反向合并的目的是什么?

  •  
  •   wxsm ·
    wxsms · 2018-12-03 11:45:26 +08:00 · 5667 次点击
    这是一个创建于 2184 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Once all conflicts have been marked as using ‘ ours ’ or ‘ theirs ’, the conflict can be resolved. This will perform a merge of the target branch of the merge request into the source branch, resolving the conflicts using the options chosen.

    https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html


    团队已经被它坑了不少次了,如果使用 Gitlab 提供在在线冲突解决工具的话,本来是将 A 往 B 合并的,结果变成了 B 往 A 合并,导致分支管理混乱。这个设计合理吗?

    13 条回复    2022-09-22 12:53:57 +08:00
    azh7138m
        1
    azh7138m  
       2018-12-03 11:50:46 +08:00
    这边有两个选项,一个在 source 上面 merge target,一个在 target 上面 merge source,不要点错就好了.....
    (按道理不是在本地先合一下 target 的吗
    WhiteSaber
        2
    WhiteSaber  
       2018-12-03 11:53:06 +08:00
    pu~ 找到上班的 kary 哥
    swulling
        3
    swulling  
       2018-12-03 12:00:53 +08:00
    你用 Git 自带的合并也是一样的啊,合并冲突的时候没有什么正向反向,只能靠人工在两个修改之间选择。
    wxsm
        4
    wxsm  
    OP
       2018-12-03 14:36:15 +08:00
    @azh7138m 按我的理解,如果本地合并的话应该是切到目标分支,然后合源分支。

    @swulling 你理解有误,这里说的方向不是冲突合并的方向,是分支合并的方向。
    wxsm
        5
    wxsm  
    OP
       2018-12-03 14:37:40 +08:00
    swulling
        6
    swulling  
       2018-12-03 15:58:21 +08:00
    @wxsm 分支合并其实也是一样的,git 里的分支从设计上没有说那个是 target,哪个是 origin
    当然实际使用的时候会生成一些固定的模式,gitlab 应该加一个配置,固化下模式。


    不过在项目人数 <= 8 人的时候,我个人会要求团队保持线性历史,配置禁止 merge commit,有冲突直接不允许 push,后 push 的同学需要自行 rebase 解决冲突后提交。

    暂时没有人数 >= 8 人的开发经验 :D
    HangoX
        7
    HangoX  
       2018-12-03 19:07:00 +08:00
    我猜楼主其实是想开那个 merge no fast forward,因为不开就会在 dev 上看到是 dev 合并去特性分支,gitlab 上开了之后就不管你怎么合并,合并过去的时候都会创建一个合并点
    wxsm
        8
    wxsm  
    OP
       2018-12-04 09:40:11 +08:00
    @swulling 分支合并当然要有 target 跟 source 的概念呀,比如一个主分支,一个 feature A 分支这周上线,一个 featureB 分支下周上线,A 跟 B 都可以往主分支合并,但主分支在 A 上线前不能往 A 合并,A 必须不能包含 B 的代码。其实我说的就是这个意思。

    @HangoX 不是的,同上。
    HangoX
        9
    HangoX  
       2018-12-04 14:37:11 +08:00
    @wxsm 你完全搞错了,第一,这个是 merge request 解决冲突之后是需要审阅才能合并到目标分支的,所以反过来合并 gitlab 没错。第二,feature b 不应该合并到主分支上,要么你们就每个版本不同的公共发布分支,要么就是主分支上只有要发布版本的内容。
    wxsm
        10
    wxsm  
    OP
       2018-12-04 15:31:49 +08:00
    @HangoX 退一步说,就算我不把 B 合并到主分支,那么主分支到 B 的合并应该是正常操作吧?那这时候 gitlab 把 B 合到主分支去了,你还觉得没错吗?
    HangoX
        11
    HangoX  
       2018-12-04 19:03:35 +08:00
    @wxsm 你要先理解那个东西叫 merge requset,不是 git 上的 merge ,人家就不是给你用来把主分支合并到 feature 分支上的。
    temberature
        12
    temberature  
       2019-05-09 14:26:59 +08:00
    Note: 注意: GitLab resolves conflicts by creating a merge commit in the source branch that is not automatically merged into the target branch. This allows the merge commit to be reviewed and tested before the changes are merged, preventing unintended changes entering the target branch without review or breaking the build.
    Gitlab 通过在源分支中创建一个 merge commit 来解决冲突,该分支不会自动合并到目标分支中。 这允许在合并更改之前对合并提交进行审查和测试,从而防止意外的更改进入目标分支,而无需审查或中断构建

    ( revert 可以解决某些场景)
    Sinpo0
        13
    Sinpo0  
       2022-09-22 12:53:57 +08:00
    @wxsm 楼主搞明白了吗,我看了一圈答案还是没明白,求指教😭
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2414 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 16:03 · PVG 00:03 · LAX 08:03 · JFK 11:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.