设为首页 收藏本站
查看: 904|回复: 0

[经验分享] Git Flow,Git团队协作最佳实践

[复制链接]

尚未签到

发表于 2018-1-13 06:28:19 | 显示全部楼层 |阅读模式
  Git是一个很好的版本管理工具,不过相比于传统的版本管理工具,学习成本比较高,
  实际开发中,如果团队成员比较多,开发迭代频繁,对Git的应用比较混乱,会产生很多不必要的冲突或者代码丢失等。
  就像写代码需要代码规范一样,使用Git进行代码管理同样需要一个清晰的流程和规范, Git Flow就是一个被广泛认可的Git使用最佳实践。
  Git Flow是Vincent Driessen提出的一个分支管理的策略,http://nvie.com/posts/a-successful-git-branching-model/,
  应用这个规范可以使得版本库的演进保持简洁,主干清晰,各个分支有不同的职责,在很大程度上减少冲突的产生。

Git Flow开发流程
  Git Flow通过对分支的管理,实现版本迭代的清晰。
  这个流程图是应用Git Flow的标准流程,可以看到,不同的分支在产品研发和上线的不同阶段有不同的作用,扮演了不同的角色。


Git Flow不同分支的角色
  结合图片,简单介绍一下不同分支的职责。

1.Production分支
  这个分支是发布到生产环境的代码,这个分支只能从其他分支合并,不能在这个分支直接修改。

2.Develop分支
  这个分支是主开发分支,包含所有要发布到下一个Release的代码,这个主要合并自其他分支,比如Feature分支。

3.Feature分支
  Feature 分支主要用来开发一个新的功能,一旦开发完成,合并回Develop分支,并且进入下一个Release,Feature分支可以选择删除或者保留。

4.Release分支
  当需要发布一个新Release的时候,基于Develop分支创建一个Release分支,Release分支在测试过程中可能会修改,完成Release后,合并到Master和Develop分支。

5.Hotfix分支
  当在Production发现新的Bug时候,需要创建一个Hotfix分支, 完成Hotfix后,合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release。

Git Flow使用原则


  • Master分支是线上稳定分支,Release通常用作测试分支,Develop分支是开发应用的主分支
  • 所有的功能开发都在Feature分支进行,然后合并到Develop分支
  • Release分支发布后出现问题,直接在Release分支修改,避免Develop分支代码污染

Git Flow分支协作最佳实践
  我们在应用Git Flow的时候,也遇到了一些问题,比如开发结束后,在develop分支进行merge开发分支操作,出现冲突如果不能很好的解决,容易对develop分支的代码造成污染。
  下面是实际开发中使用的流程,在Feature分支上合并develop代码,然后合并到develop分支上,流程更加清晰,冲突优先在开发分支解决。
  一个开发人员典型的提交流程:
  

//新建分支  
git checkout develop
  
git pull origin develop
  
git checkout -b myfeature
  

  
//在分支上开发
  
git add ***
  
git commit -m "*****"
  

  
//在分支开发过程中合并develop分支到本分支(先把自己的工作commit到本地)
  
git checkout develop
  
git pull origin develop
  
git checkout myfeature
  
git merge develop
  

  
(如果没有冲突,就继续开发,如果有冲突,执行下面过程)
  
首先在本地解决冲突,再把冲突解决commit
  
git add ***
  
git commit -m "*****"
  

  
//在分支开发结束,需要将本分支合并到develop分支(先把自己的工作commit到本地)
  
git checkout develop
  
git pull origin develop
  
git merge myfeature
  

  
(如果没有冲突,就推送到远程)
  
git push origin develop
  
(如果有冲突,则解决冲突,再commit,并推送到远程:)
  
git add ***
  
git commit -m "*****"
  
git push origin develop
  

  

  应用Git Flow的目的是更好的进行版本管理和持续集成,有些细节并不一定要遵循这个模型,可以根据团队规模进行简单的调整,适合的才是最好的。  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-434513-1-1.html 上篇帖子: Git和Github使用 下篇帖子: 韩亚飞_yue31313_韩梦飞沙
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表