git规范

开发模型

定义一款合适自己公司的git开发模型很重要,规定所有开发人员的操作规范,约定处理流程,使得软件的开发流程更加清晰,更易于管理。
在这里插入图片描述
1、master 分支
master 为主分支,也是用于部署生产环境的分支,确保master分支稳定性, master 分支一般由develop以及hotfix分支合并,任何时间都禁止直接使用master分支进行代码修改,也禁止直接将代码push到master分支。

2.hotfix 分支

  • hotfix/ 开头的为修复分支,线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支。

3.release分支

  • release 为预上线分支,发布提测阶段,会release分支代码为基准提测。
  • 环境验收通过后,将版本发布生产环境,部署到生产环境后,将release分支代码merge到master分支,并打上tag或里程碑等标志
  • 生产环境出现的bug,应该从release分支拉取hotfix分支进行修复,修复完成后,meger回release、master分支
  • 禁止直接使用release分支进行代码修改,也禁止直接将代码push到release分支。

4.develop 分支

  • develop 为开发分支,始终保持最新完成以及bug修复后的代码,一般开发的新功能时,feature分支都是基于develop分支下创建的。
  • 不能随意将dev合并到其他主分支(dev分支可能包含进度不一致的代码或迭代不上线的代码)

分散但集中

在这个模型中,唯⼀的中⼼仓库, 命名为origin。
在这里插入图片描述
每个成员除了可以在中心查看origin推拉代码外,还可以从其他同行那里提取变化,组成子团队。如上图有Alice和Bob、Alice和David、Clair和David可以相互组成子团队。

Master分支

在这里插入图片描述

在中心仓库中存在两个无限寿命的分支:

  • master 主分支
  • develop 开发分支,平行于master分支

当源代码在develop分支中被开发完成,并准备发布时,所有的提交变更都应该被合并⾄master分支, 并使
⽤Tag⼯具标记⼀个版本号。

功能分支feature

在这里插入图片描述
当我们要开发一个新功能的时候,会基于develop分支创建一个本地分支feature-*,它最终会被合并到develop分支中,或者丢弃删除。

  • 来源:develop
  • 合并目标:develop
  • 命名:feature-*

1.基于develop分支创建一个新功能分支:

$ git checkout -b feature-dzh develop
Switched to a new branch "feature-dzh"

2.将新功能分支合并到develop分支中:

$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff feature-dzh
Updating ea1b82a..05e9557
(Summary of changes)
$ git branch -d feature-dzh
Deleted branch myfeature (was 05e9557).
$ git push origin develop

这个–no-ff标志使合并始终创建一个新的提交对象,即使合并可以使用快速转发来执行。这样可以避免丢失有关特性分支历史存在的信息,并且所有组一起提交一起添加的特性,比较:
在这里插入图片描述
在右侧图中,新功能分支中的所有提交,都被嵌⼊到了develop分支中,除了认真阅读提交的⽇志信
息,没法把他们分离出来。当我们试图回顾这个新功能分支中做了哪些改动时,将是个很⿇烦的事
情。如果–no-ff标记,则很容易解决。但它将创建更多(空的)提交对象,但收益要比成本大得多。

发布分支(Release branches)

  • 发布分支release⽤于新版本发布前的准备⼯作,它允许我们在发布前,做最后⼀点点改动,包括少量
    BUG的修改、元数据(如版本信息、编译参数等)的修改等。
  • 来源:develop
  • 合并目标:develop和master
  • 命名:release-*

1.创建⼀个发布分支:

假设1.1.5是当前的生产版本,我们即将发布一个大版本。状态develop已经为“下一个版本”做好了准备,我们已经决定这将变成1.2版(而不是1.1.6或2.0)。因此,我们退出发行版,并给发布分支一个反映新版本号的名称:

$ git checkout -b release-1.2 develop
Switched to a new branch "release-1.2"

$ ./bump-version.sh 1.2
Files modified successfully, version bumped to 1.2.

$ git commit -a -m "Bumped version number to 1.2"
[release-1.2 74d9424] Bumped version number to 1.2
1 files changed, 1 insertions(+), 1 deletions(-)

在创建一个新分支并切换到它之后,我们增加版本号。这里,bump-version.sh是一个虚构的shell脚本,它更改工作副本中的一些文件以反映新版本。(当然,这可能是一次人工更改-重点是一些)文件更改。然后,提交新的版本号。

2.完成发布分支:

当一个发布分支已经准备好发布时,应首先将release分支合并到master分支(所有master分支的提交都代表一个新的发布工作),然后给master一个tag,以便未来对历史进行跟踪。最后将所有发布分支release上的提交都合并会develop分支,确保下一个发布工作中包括了所有的bug修复。

2.1 GIT的前两个步骤:

$ git checkout master
Switched to branch 'master'
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)
$ git tag -a 1.2

发行版现在已经完成,并为以后的参考做了标记。(最好使用-s或-u 以加密方式对标记进行签名的标志)

2.2 为了保持在发布分支中所做的更改,我们需要将它们合并回develop:

$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)

这个步骤很可能导致合并冲突(甚至,因为我们已经更改了版本号)。如果是的话,修复它并提交。

2.3 现在我们真的完成了,发布分支可能会被移除,因为我们不再需要它了:

$ git branch -d release-1.2
Deleted branch release-1.2 (was ff452fe).

紧急修复分支(Hotfix branches)

在这里插入图片描述

  • 来源:master

  • 合并目标:develop和master

  • 命名:hotfix-*

      紧急修复分支和发布分支相似,但它并不不是计划中的⼯作。它应⽤于⽣产环境中出现的紧急bug 
    

修复。紧急修复分支基于线上运⾏行的Tag号签出,并以此为基础进⾏行修改。
这样,此处修复可以不不影响当前的开发⼯作(在develop分支中),专门抽取⼀个人力力来快速的
修复生产环境的问题。

1.创建⼀个紧急修复分支:

紧急修复分支基于master创建。比⽅来说,现在⽣产环境运⾏行的是1.2版本,不不幸的是,它发⽣了了⼀
个严重的bug。与此同时,我们的开发⼯作正在进⾏行中,还没有准备下⼀次发布。我们需要创建⼀个
紧急修复分支,来解决现在⽣产服务器器上发⽣的问题:

$ git checkout -b hotfix-1.2.1 master
Switched to a new branch "hotfix-1.2.1"

$ ./bump-version.sh 1.2.1
Files modified successfully, version bumped to 1.2.1.

$ git commit -a -m "Bumped version number to 1.2.1"
[hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1
1 files changed, 1 insertions(+), 1 deletions(-)

建立分支时,别忘了了声明新的版本号, 然后,并通过⼀两次代码提交⼯作,来完成bug的修复工作。

$ git commit -m "Fixed severe production problem"
[hotfix-1.2.1 abbe5d6] Fixed severe production problem
5 files changed, 32 insertions(+), 17 deletions(-)

2.完成紧急修复分支:

当修复工作完成后,代码重新合并⾄master进⾏行发布。同时将其合并⾄develop分支,已确保在下
一次发布⼯作中正常的包含了了本次修复。合并⼯作与发布分支操作类似。

2.1 首先切换到master分支,合并,然后标记tag。

$ git checkout master
Switched to branch 'master'

$ git merge --no-ff hotfix-1.2.1
Merge made by recursive.
(Summary of changes)

$ git tag -a 1.2.1

2.2 然后,在develop中合并本次分支:

$ git checkout master
Switched to branch 'master'

$ git merge --no-ff hotfix-1.2.1
Merge made by recursive.
(Summary of changes)

$ git tag -a 1.2.1

您最好使用-s或-u 以加密方式对标记进行签名的标志。

2.3 接下来,在develop也是:

$ git checkout develop
Switched to branch 'develop'

$ git merge --no-ff hotfix-1.2.1
Merge made by recursive.
(Summary of changes)

特别说明: 如果此时已经创建了了⼀个发布分支,正准备下⼀次上线⼯作,则紧急修复分支应该被
合并至该发布分支,而不不是develop分支。紧急修复的代码将在发布分支完成时,经由发布分支合 并 至develop分支中(如果develop分支也需要立即使用这个紧急修复的代码,则也可以将紧急修复分支
同时合并在develop中)。

2.4 最后,删除临时分支:

$ git branch -d hotfix-1.2.1
Deleted branch hotfix-1.2.1 (was abbe5d6).

参考文献:https://nvie.com/posts/a-successful-git-branching-model/

一些开发规范

1.本公司开发规范
在这里插入图片描述
2.敏捷开发
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愛沢かりん

感谢您对我的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值