Git 工作流分支合并问题.

1.在多人合作的项目,git上面有多个基于master的分支;
2.现在新开发一个新的功能,基于master建一个分支function-a,现在我完成了这个分支,准备合并到了master上面,但是合并的方法有以下两种:
a)直接把function-a合并到master;
b)先把master合并到function-a,解决冲突之后, 在把function-a合并到master;

3.以上两种方式的最终结果都是一样,但是我不懂第二步是值得推荐的呢?

阅读 3.9k
3 个回答

简而言之就是merge和rebase的区别。
为什么不直接merge:1.每个branch来源于一个master,merge回去之后commit历史非常凌乱,不利于回溯历史代码。

clipboard.png

  1. merge是直接合并所有内容,所以如果你的branch有些改动和master在你建立branch之后的有些改动是重合的,merge会直接合并。如果某一天想要回溯代码查找谁负责的某块代码,那块代码很有可能被多个branch重复复写,无法定位某个程序员写了什么。而rebase的好处就是每次rebase完了之后,你的branch merge到master以后就成为新的master,即使有重合代码也不会暴力的直接覆盖掉,而是会保留branch和master里面所有的commit。
新手上路,请多包涵

两种方式是都可以把 function-a 合并到 master 分支上。推荐第二步的主要原因有两个:
1、master 分支一般都作为上线分支,如果是多人合作,会有多人根据 master 分支拉取子分支写新的功能或者解决 bug,在master 上合并如果出现冲突,并且不小心提交了,同事拉取的代码就是错的代码。可以想象多个同事这样做是什么后果。
2、有的项目会部署自动化,提交 master 分支后服务器会自动拉取 master 分支代码,如果合并有冲突或者有 bug,并且不小心提交,线上就炸了。

还是不要在master直接合并的好,在分支合并然后测试,测完合并到master ,再走预发布 ,发布流程

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进