Loading... 上一篇git相关文章主要声明了对于git的使用以及踩坑记录。传送门: <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://www.tangsong.fun/index.php/git.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://blog-picture01.oss-cn-shenzhen.aliyuncs.com/img/20210129153458.PNG);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">[Git]分布式版本控制器</p> <div class="inster-summary text-muted"> 入职前学了一些git的基础,后来在开发过程中遇到了git回退、“后悔”之类的问题,便索性完整的过了一遍。练习地址h... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 本篇主要讲解了 **Git分支在公司中的实际使用策略** <!--more--> ### Git 分支管理策略图  **`master分支和develop分支,这两个分支至关重要,它会贯彻整个流程始终,绝对不会被删除。`** ### master分支 master分支保持着软件可以正常运行的状态。由于要维护这一状态,所以**绝对不允许开发者直接对master分支的代码进行修改和提交**。 其他分支的开发工作进展到可以发布的程度之后,将会有master分支进行合并,并且这一合并只在即将上线时进行。发布时,说明文档要带上哪一次的commit 编号。 ### develop分支 develop分支是测试分支。与master分支一样,这个分支也**不允许开发者直接进行修改和提交**。开发结束需要提测的时候,开发人员把自己的feature特征分支合并到develop,部署等待QA测试。 测试人员要以develop分支为测试分支,**开发人员在feature分支中进行代码的修正,修改后合并到develop分支给QA再次验收。** (**注意**:之前出现过测试时候出bug然后直接在该测试环境上修改,同时开发上还有一些新增的代码。导致再次提交时两边版本冲突。) ### feature分支 feature分支以master分支为起点,是开发人员直接更改代码发送提交的分支,在feature分支中进行新功能的开发或者代码的修正。 ### release分支 release分支,下一个发布分支,是develop到master的过渡分支,区别于master是随时可以上线,经过多轮QA、code Review后的代码,release是准备发布的代码,打完Release分之后,我们可以在这个Release分支上测试,修改Bug等。 (**记住**:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支) ### hotfix 当我们线上发现新的bug的时候,我们需要创建一个Hotfix,基于Master分支创建,完成Hotfix后,我们合并回master和develop分支。 ### 开发流程 - 第一步,从master分支创建feature分支,注意创建feature分支前,记得一定要先执行git pull,保证master分支处于最新状态。 - 第二步,从feature分支中实现目标功能,feature分支命名必须前面带 `feature/xxx,xxx`最为自己姓名的简拼和迭代的开始时间,例如:`feature/zqp20200422`,特殊功能性的可以以具体功能命名,例如:`feature/add-user` 新增用户的相关功能 当前系统中使用的是:`feature_20_1230`这种(其实有点不符合规范了) - 第三步,功能开发完毕,待需要提交测试的时候,合并到develop分支 - 第四步,QA测试有bug,继续在feature分支上面修改bug,修改完毕再合并到develop分支,继续提测 - 第五步,QA验证没问题,创建release分支,开发人员根据具体上线计划,请求将各自的功能特征分支代码合并到release分支,等待上线。release以每次迭代的时间点来命名,例如:`release/2020_w15-16` 2020年第15-16周迭代 - 第六步,准备上线,将release分支代码合并到master - 第七步,上线成功,将当前master最新commit打上tag,tag名称与release名称一样 - 第八步,删除feature分支,删除release分支,切记,很多研发都忘记上线后去删除自己的创建的分支 ### 注意事项 - 1、feature分支如果存在开发过程中多个commit的,合并分支的时候,需要合并一下commit,可以用 `git merge --squash some-feature` 或者 `git rebase some-feature` - 2、养成一个好习惯:在执行git commit前,执行 `git diff HEAD`命令,查看本次提交和上次提交的差别,确认后再提交 - 3、如提交了不想提交的文件,可以通过 `git rm -r --cached filename` 去掉已经托管的文件 然后继续就行 - 4、如何合并分支后,push之前,`show log` 看一下 commit记录,最近的commit 是 `Merge branch 'feature/zqp20200422' into develop'` ,可以通过 `git commit --amend` 修改合并的内容,再执行push,确保分支简洁。 - 5、主线(master/develop)的修改合到你的特征分支上,做一次集成,这种情况建议使用 `git rebase`比较好。 - 6、保证develop分支的代码覆盖全部的master代码,即develop > master,hotfix分支和release分支有改代码,务必要同步合并到develop Last modification:August 21, 2022 © Allow specification reprint Like 0 喵ฅฅ