前言

Git作为咱们日常开发代码的版别办理,开发分支的办理方面起着很大作用,咱们开发过程中分支一般有出产、预发、测验、开发这几个分支,咱们会依据项目进行的某个阶段,将代码提交到某个版别上,正常流程是先开发 —>测验 —>预发—>出产,但是一般会有许多版别,有先后上线顺序,而且咱们的开发人员也会是多个,在各种因素下项目的开发版别长途分支,以及开发人员的本地分支办理就由为的要害。

普通开发流程

正常一个版别需求经过的几个阶段,分别是dev、test、uat、master,咱们经过下面流程图这么做是没什么问题的,每个阶段去将从master拉取的版别分支,push到对应的分支上进行发布,正常预发和出产环境的代码应该保持一致,test分支由于会有多个版别并行开发,所以代码和预发和出产比起来会有一些不一样。

你还在用merge么,了解了解rebase吧

多版别并行开发

在多个版别并非开发的时分,对分支的办理就不像上面那么简略了,涉及到多个version,这些版别的上线时刻节点也是不同的,意味着上test和uat的时刻节点也是不一样的。

这儿涉及到多种状况

  1. 在后端开发人员较少的状况下,一般2-3人为例,完全能够从master拉取一个开发分支,分支格局已 服务名+上线时刻,例如xxx_20230130这个本地分支,后端开发人员一起在这个分支上进行并行开发,开发阶段将自己的本地分支merge到dev分支,由于只要2-3人所以抵触处理起来还好,有抵触处理抵触。
  2. 后端开发人员较多的状况,一般在5-8人为例,这时分从master分支拉取分支,分支格局就需求已 服务名+名字缩写+上线时刻来命名,尽量每个人在自己命名的分支下进行开发,这样在开发阶段本地测验的时分,能够做到彼此不影响,但是在merge到长途分支的时分,处理代码抵触的时分需求认真仔细一些,这种活还是交给心细的人来做吧,测验的时分也需求依据版别上线的优先级进行测验。
  3. 版别比较多的状况,比如一个月会有4-5个版别的开发,那么上线时刻也是分4-5个节点,这样就需求每次从先发上线的长途分支,将代码merge到下个版别的本地开发分支上,以此类推。

你还在用merge么,了解了解rebase吧

Git merge

作为git 兼并分支的指令,也是在日常开发过程中常常用到的一个指令,一般咱们会将拥有最新代码的一个版别merge到较老的一个版别,完成版别同步。

你还在用merge么,了解了解rebase吧

大体便是这么一个步骤,从刚开始的公共分支,变为master和feature分支, 经过git merge master 指令将master分支merge到feature分支。 Merge指令会将前面featrue分支一切的commit提交悉数兼并为一个新的commit提交。 ⚠️这儿只要会在发生抵触的时分,才干发生新的commit记载。

能够理解为git pull =git fetch +git merge,拉取最新的长途分支,然后将这个分支兼并到另一个分支。

在公司开发的时分,一般我们喜爱这个指令,由于简略粗犷,直接将其他分支兼并到自己分支,简略好理解。

Git rebase

作为自己的个人喜好,比较喜爱rebase这个指令,核心理念便是“变基”。

你还在用merge么,了解了解rebase吧

  1. 由上图可看见,经过reabse指令将feature分支延续到了master分支后边。
  2. 在多人开发过程中,假如其他人在master进行commit,这个时分你在feature分支提交了几个commit,这时分你运用rebase指令,会将你的commit提交记载放在master的commit记载的后边,而merge就会将不同分支的commit兼并成一个新的commit记载,这便是merge和rebase的不同点。
  3. 本地feature分支和远端的master分支假如是同一条分支的话,能够运用rebase,确保commit的记载的清晰性,这个很要害!

⚠️不要在公共分支运用rebase指令,这样会污染公共分支,这样公共分支就会存在你的commit记载,他人拉取的时分会存在你的最新的commit记载。

总结

在开发中不只需求代码质量高,在版别办理上也是由为的重要,上线前漏掉代码的事情,相信我们都曾遇到过,但是这种事情是很风险⚠️的,希望此文章能给我们在日常代码版别办理中提交警惕,合理兼并分支,最终祝我们在新的一年,少出bug、多多学习、多多进步。