社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

git的分支管理

郭邯 • 4 年前 • 103 次点击  
阅读 57

git的分支管理

1. 分支管理策略

前端采用Git Flow的分支策略,即为功能分支策略。以下为理想的分支管理策略,实际分支管理情况,由各个组长确定。相应分支功能说明如下:

1.1 master分支

主分支,该分支上的代码,已经经过测试,并且无bug,可以直接发版的分支。

分支合并情况:

合并分支:test分支测试完成后,合并到master分支上。

打tag(后端处理):要发版的时候,后端会从master分支上拉取代码,拉取前,他们会在master分支上打一个tag。表明现在线上拉取的是这个节点代码。

1.2 test(release)分支

测试分支(对应gitflow的预发布分支),根据测试环境和测试功能的不同可能会有test、test2、test3……等多个分支。测试分支是发布到测试环境或者灰度环境的分支。测试同事会测试上面的代码,确保代码没有问题。测试通过后,在发版前,需要把测试分支的代码合并到master分支上。

测试分支上有bug,有两种处理方案。1是直接在test分支上改,2是从test分支上拉取新的分支hotfix_testX(x为分支序号)_xxx(xxx为bug名),在此分支上改。在新分支上,修改bug后再合并会test分支上。

分支合并情况:

拉取分支:从最新的tag上重新拉取testX分支。这样就可以保证testX分支上代码跟线上的代码一致。

合并分支:拉取新的test分支后,把feature分支合并到testX分支上,发版,发版后通知测试同事测试。

上线:testX分支测试通过后,再合并到master分支。保证新功能上线。

删除分支:test分支合并完了,删除test分支(本地,远程都删除)。

目前小药药test分支,命名没有语义化,命名是test、test2、test3。每一个分支,对应什么测试环境、什么测试功能并不明确。用到时可以问下开发。

1.3 feature分支

模块功能分支,有时候我们同一个系统,经常有多个功能同时开发的情况。因此我们需要根据不同的功能,拉取不同的分支。feature分支由组长从最新的tag上拉取,保证feature分支跟线上的一致。

feature分支命名feature-xxx(xxx为新的功能)。

feature分支拉取完成后,可以直接在该分支上开发,也可以每个人从feature分支上拉取一个自己的分支,比如feature-xxx-gxq,开发完成后再合并到feature分支上。

功能可以提测的时候,再把feature分支合并到testX分支上,给开发测试。

分支合并情况:

拉取分支:新功能拉取新的分支,feature分支从最新的tag上拉取,各个开发可以在feature分支上直接开发,也可以拉取自己的分支,开发完成之后再合并上去。

合并分支:功能开发完成后再把feature分支合并testX分支上。

删除分支:合并分支后,删除feature分支(本地,远程一起删)。

1.4 hotfix分支

hotfix为正式线的补丁分支,当线上代码有bug的时候,需要从最新的tag上拉取一个分支来修复bug。这个分支命名通常为hotfix-xxx(xxx为bug名)。

开发在hotfix上修改bug后。拉取一个新的test分支。如果要拉取的分支名已经存在,问下开发这个分支有没有人使用,没有的话,就删除该分支。从最新tag上拉取一个test分支,把你的hotfix分支合并到test分支,测试通过后。再把test分支合并到master分支上,同时还要把你没有问题的hotfix分支,合并到其他所有的test分支上和feature分支上。

分支合并情况:

拉取分支:从最新的tag上拉取分支

合并分支:先是合并到test分支,拿去测试。测试通过后,再合并到所有的test和feature分支上。避免这些分支再合并到master上时,把以前修改过的代码,又修改回来了。

1.5 tag说明

在重要的节点,要给分支打个tag,这样万一出现问题时,方便及时回滚。

1.6 其他分支

除了以上所说的那些分支外,还有些其他分支,比如bench(压测)分支。这些分支一般都是从最新的tag上拉取的。当你需要更新这些分支的时候,建议直接把这个分支删了,重新从最新的tag上拉取。如果担心有意外发生,可以咨询下开发。

另外gitflow中还推荐一个分支develop分支,我们根据我们实际开发需要,不再单独建develop分支。把master分支当develop分支使用,这样可以减少些流程上的麻烦。

2.分支的命名

我们拉分支的时候,不仅要知道分支是什么功能,还需要知道分支从哪里来,那一天建立,由于分支不能加备注说明,因为我们只能在分支命名上加以体现。

分支命名规则如下:

功能-模块-来源-日期

比如saas项目,修改线上灰度会员bug的分支,就可以命名如下:

hotfix(功能)-member(模块)-master(来源)-1111(日期)

3.几个需要谨记的点

1.一旦分支已经上线或者上灰度,就不能在原来的分支上改bug。改bug必须重新拉分支。避免,master上合并的修改别冲掉。

2.回滚不能使用revert命令,而是要尽量使用reset。避免回滚之后,再合并时合并不上。

3.mergeRequest的时候,出现冲突,一定不能在gitlab上解决。gitlab上解决冲突会导致双向merge,把合并分支上的功能合并到feature分支上。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49461
 
103 次点击