Git的使用规范

前言

个人使用git也快4年的时间了,从开始的pull&push分不清,到慢慢的注重使用规范,使用效率,再到在团队协作规范,个人总结了一套自己的想法,不一定都对,希望给大家一些参考。

初始git

git从一出来就伴随着和svn的比较差异,个人觉得他们最大的差异是以下几点:

  • git有各自的本地仓库,svn只有一个中央仓库
  • git具有强大的分支管理,这点是svn无法媲美的
  • git的每次commit保存的是文件之间的diff,svn则是全量保存

git常用的命令

git的命令实在是太多了,有很多可能我们永远都用不上,作为一个工具,我们应该将其基本命令做到熟练使用就可以啦。
下面列出我常用的一些命令:

  • pull
  • push
  • add
  • commit
  • status
  • fetch
  • branch
  • checkout
  • diff
  • log
  • merge
  • rebase

如果小伙伴还不知道上述命令的具体的含义,得去好好补补课啦!
更多详细的git说明,请点击查看

git客户端

进行git操作可以使用命令行终端,或者使用客户端(如SourceTree)。个人建议绝大部分操作都在命令行终端进行,如pull、push、commit、checkout等操作,少部分操作在客户端进行,如查看每次提交的diff或者整体分支线。

在命令行操作git,你会更好的把握每次操作都做了些什么。为了更高(zhuang)效(bi)的操作git,有个小诀窍是你必须掌握的:alias(设置别名)。

下面是我常用的alias配置:

  • ci = commit
  • st = status
  • co = checkout
  • br = branch
  • ss = status --short
  • df = diff
  • dc = diff --cached
  • lo = log --oneline
  • lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

最后lg这个最屌了,我也是从别处学过来,具体啥效果,大家试试就知道了
alias的配置没有最佳的,配置符合自己习惯的即可
更多alias配置可参考


git基础就一笔带过了,更多的细节网络上有许多的相关文章,相信大家都能找到自己想要的!

git分支使用规范

下面要说的是自己在团队内推行的一套多人协作的git分支使用规范,这也是大部分团队在用的一套分支规范。


分支规范图示

上述图,相信大部分人都见过,但不一定理解了,我就根据自己的使用总结如下:

  • 一个稳定master分支
  • 一个待发布的develop分支
  • 若干个正在开发的feature分支
  • 分支合并前先rebase待合并的分支
  • 分支合并使用merge —no—ff,生成合并记录
  • 可以使用gitlab的pull request进行合并前的code review
  • 如遇到线上有一般的bug,可在develop上切换出hotFix分支进行bug修复,完成后合并到develop上,等下次版本一起发布
  • 如遇到线上有十分严重bug,应在master上切换出hotFix分支进行bug修复,并验证好了后随即合并到master上准备发布
  • 版本发布后可以按需切换出版本分支(release-v1.0)或者使用tag进行代替

commit规范

commit示例

上述两幅图,都是我不同时期的commit记录,相信大部分人都会觉得右图中的commit要好些吧!

哈哈哈,下面开始提问环节

什么样子的commit才算好的呢?

  • 保证commit尽量只做一件事
  • 书写commit message言简意赅
  • 规范commit message格式

为什么要规范commit message?

  • 加快Code Review 的过程
  • 可以快速生成release note
  • 让其他的程序猿找历史问题的时候想跪谢
  • 帮助提高项目的整体质量

那如何规范commit message呢?

这个问题问的好啊,我们要规范commit,首先是不是应该要全面剖析commit呢!

commit全面剖析

提交信息包括三个部分:Header,Body 和 Footer。
<Header>
<Body>
<Footer>
其中,Header 是必需的,Body 和 Footer 可以省略。

Header

格式:<type>: <subject>
type:用于说明 commit 的类别,如:feat、fix等
subject:本次commit的简短描述,以及物动词开始,15个字内

Body

Body 是对本次 commit 的详细描述,可以分成多行。
注意:应该说明代码变动的动机,以及与以前行为的对比。
无重大变更,一般不写。

Footer

Footer 一般只用于以下几种情况
- 关联 Issue(Issue #1, #2, #3)
- 关闭 Issue(Close #1, #2, #3)
可用github关闭issue,或者与自己的任务相关联

说了这么多,我也知道了要规范commit message,但是难道我们每次commit的时候都手动输入,达到上述右图中的效果么?
很明显不是啦,这样子做根本就体现不出我们是程序猿的懒。
下面到了推出解决方案的时候了

git cz插件

根据github上相关提示进行安装
git cz插件
插件安装完成之后,输入git cz能出现以下效果就说明你装成功了

安装成功效果图

都是些简单的英文,大家都看的懂,我就header中type进行简单说明:

  • feat:完成一些功能
  • fix:修复一些问题
  • docs:一些文档修改
  • style:样式修改
  • refactor:一些无关功能性的修改,例如重命名
  • perf:一些优化重构
  • test:测试相关提交
  • chore:引入一些第三方库等

总结

本文将个人的git使用经验进行了初步总结,对你而言有好有坏,如其中有部分能帮组你,就十分高兴了!

后记

此篇博客算是我再次踏上书写博客之路的第一篇,期望自己能坚持下去,达到每月能有2-3篇博客的产出。
本人有4年以上的移动端开发经验,目前主要做Android端的开发,总觉得该沉淀沉淀啦,总结积累的开发经验。
文中所说不一定完全对,欢迎大家拍砖,我一定虚心接受,互相讨论!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,478评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,825评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,482评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,726评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,633评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,018评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,168评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,320评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,264评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,288评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,995评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,587评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,909评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,284评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,862评论 2 339

推荐阅读更多精彩内容

  • Git版本控制 Git中大部分操作都是针对本地文件和本地数据库,只有在我们平时执行类似克隆(clone)、pull...
    喜欢萌妹子的少年阅读 401评论 1 7
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,664评论 1 17
  • git作为时下最流行的代码管理工具,Git权威指南总结了十条喜欢Git的理由: 异地协同工作; 现场版本控制; 重...
    古斟布衣阅读 1,814评论 0 12
  • 本次上课内容: HFH U5L2 本次作业: 橙色练习册: Workbook - P45. activity A....
    TimmySHENX阅读 304评论 0 0
  • 人,一旦有了欲望,就变得贪婪,就变得不择手段。 我们以为,成功就是有钱,成功就是朋友广,成功就是权力大。 但其实,...
    露露2008阅读 299评论 0 1