《如何用GIT,提高系统生产效率?》

供应宝

超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/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180518G10YNK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券