供应宝
超300家三级医院的合作伙伴
GIT是代码版本控制系统,因为供应链业务涉及多版本的长期更新和管理,好的GIT管理模式和操作习惯可以提高生产效率,使项目代码更容易管理和维护。
GIT操作实战
摘要
本文从实际应用角度出发,简述了项目开发中的git操作规范,开发一个功能所涉及的git常规操作,git提交信息的标准化和编写风格的统一设置。
关键词:git 版本控制
1/引言
Git是目前最火的版本控制系统(VCS),可是在项目中实际运用的时候却总是出现这样或者那样的问题,让开发同学苦不堪言,大吐苦水直言git不如svn好用。本文不是git命令教程,也不讲过多的流程控制策略,而是从实际应用的角度出发,总结日常开发相关的操作与技巧。作者是写作小白,能力有限,在这里抛砖引玉,希望文中某些点可以给大家带来一些启发。
2/正文
2.1 操作规范
为了使项目代码更易于维护,易于管理和规范化。技术团队需要有统一的git操作规范,以下是目前项目中应用的规范仅供大家参考:
☑ 保留2个长期分支(master,development)
☑预发分支(release),功能分支(feature)和缺陷分支(hotfix)为短期分支,合并后删除
☑为jira上的每个需求/缺陷建立一个分支,尽量只使用一次提交
☑提交前测试代码可以运行并且按照需求或bug描述正确实现了相应功能
☑保留一次提交的原子性:如:实现一个功能,或者修改一个bug,或者做了性能提升,或者做了样式修改
☑使用信息规范编写写提交信息
☑尽可能早的提交merge request以减少冲突的机率
2.2 开发新需求/修改bug的常规操作
强烈推荐使用命令行+第三方比较工具进行git操作,这样可以在不同系统,不同语言开发的时候直接使用,不需要花费额外的时间研究IDE的git插件。
2.2.1 新建分支
首先要拉取一个新的分支以bug单号或者需求单号命名:
2.2.2 提交代码
在新的分支上进行开发并使用commitizen(见2.3节)进行提交:
2.2.3 合并提交/修改提交
一个需求或者一个bug最好使用一个commit进行提交,提交消息要符合提交消息的规范,在合并到develop分支之前要对提交进行合并,对提交信息进行修复:
Rebase的操作:
2.2.4 合并目标分支代码
推送代码到远端分支前需要先在本地合并目标分支代码以减少提交mr的冲突
2.2.4 推送代码到远端分支, 提MR
2.3 使用commitizen编写ng风格的提交信息
使用commitizen+cz-conventional-changelog编写提交信息可以使项目中的提交更加清晰,易于理解和维护。
下载安装nodejs后:
2.4 统一编码风格
空白字符会对gitdiff/merge造成很大干扰, 明明相同的两端代码却因为空白字符(如: eol, 空格, tab等)被git当做了两段完全不同的代码处理。做一些简单的设置,即可避免这种情况。
2.4.1 git中的行尾符(eol)
不同的操作系统或者编辑器
代码从git仓库中检出到工作去或者提交到git仓库时会根据git的配置对eol进行自动的转换。
[core.safecrlf]的值是true时如果文件的行尾符与转换规则不符则不能进行git操作。如果值为false仍然可以进行git操作,但是会给出警告。
2.4.2 统一编辑器编码风格
统一编辑器的编码风格一种办法是使用同样的编辑器,做同样的配置。另一种比较个性化的方案是使用EditorConfig. EditorConfig通过配置文件设置编码风格,在编辑器上安装EditorConfig的插件后编写的文件风格就会与配置一致。风格配置包括字符集,缩进,行尾符等等,下面是一个配置的例子:
3/总结
本文从实际应用角度出发,简述了项目开发中的git操作规范,开发一个功能所涉及的git常规操作,git提交信息的标准化和编写风格的统一设置。本文取得的主要成果有:
1、给出了git操作的参考规范
2、Git操作的场景和相关命令
3、Git提交信息的格式化和统一编码风格
参考文献
[1] git官方文档https://git-scm.com/docs
[2] git protocal https://github.com/thoughtbot/guides/tree/master/protocol/git
[3] 阮一峰 Git分支管理策略http://www.ruanyifeng.com/blog/2012/07/git.html
[4] 《pro git》https://git-scm.com/book/en/v2
[5] 廖雪峰 git教程https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
[6] 阮一峰 Git 工作流http://www.ruanyifeng.com/blog/2015/12/git-workflow.html
[7] 阮一峰 Git 使用规范流程http://www.ruanyifeng.com/blog/2015/08/git-use-process.html
[8] commitizen https://github.com/commitizen
[9] EditorConfig http://editorconfig.org/
领取专属 10元无门槛券
私享最新 技术干货