搜索

首页  >  问答  >  正文

git-gui - gitlab 如何跨分支merge?

现在我的同事A起了一个项目,分之为A,里面有一些说明和common.css等组件;
然后B同事新建分之B,
C同事在本地切换到B分之并创建C分之
然后B,C同事分别在各自的分支开发
开发完毕并且推送到远程,需要将项目内容合并到一个分支

问题1:能否将B分支合并到C分支或者C分支合并到B分支?

问题2:能都将B、C分支均合并到A分支?

问题3:merge to working tree和fast-forward merge有何区别?

另外,不希望rebase。
高洛峰高洛峰2791 天前764

全部回复(6)我来回复

  • 某草草

    某草草2017-05-02 09:49:26

    难道你们都没有一个公共的dev开发分支吗?
    从dev上各自拉个开发分支,开发完了,大家都往dev上合并。
    有冲突解决冲突。

    回复
    0
  • 高洛峰

    高洛峰2017-05-02 09:49:26

    首先, 原生的git是支持分支的新建与合并的1, 所以所有基于git实现的代码版本管理工具(如gitlab/github)也是默认支持分支功能的. (gitlab还会带有权限管理功能)

    此外, 题主项目中的一个重大问题正如@52lidan所说, 没有dev分支导致代码版本管理混乱(到底是A还是B还是C分支是最主要的?), 所以给题主的建议是:

    1. 项目要有如下的分支

      • master: 正式可以发布到生产环境的代码分支(protected)2

      • dev: 经过开发与初步测试后, 可以正常工作的代码分支, 用以合并所有人的工作以及已经修复的bug(protected)

    2. 每一个任务新建一个分支, 人跟着任务走而不是任务跟着人走. 也就是说, 在远程库上, 该任务只有一个分支, 并且所有人都拉取到本地上. 所有人关于该任务的工作都需要在本地commit后再推送到任务分支. (不建议一个任务有多于三人协作, 否则分解任务为更多的分支)


    1. git分支的新建与合并 ↩
    2. gitlab中可以将分支设置为protected, 该分支只有项目中获得owner/protected, 该分支只有项目中获得owner/master权限的人才能合并别人提交的merge request权限的人才能合并别人提交的merge request

    回复
    0
  • PHP中文网

    PHP中文网2017-05-02 09:49:26

    不是很理解题主的意思,合并本身就是在不同分支间进行的,何来跨分支不能合并之说。

    回复
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-02 09:49:26

    就算合并有个先来后到,如果就是在本地开发完了也不进行远端的推送更新,怎么存在合并的情况呢,至少远端也应该有个b吧,如果没有,那都往a上合并吧,不过这样不太好

    回复
    0
  • 仅有的幸福

    仅有的幸福2017-05-02 09:49:26

    分支肯定有分叉点的,距离分叉点越远理论上不一致性更大,合并越需要人为干预,不存在人为干预都合并不了的分支

    回复
    0
  • 迷茫

    迷茫2017-05-02 09:49:26

    问题1:能
    问题2:能
    问题3:不知道

    回复
    0
  • 取消回复