400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

Git规范操作实例分析

本篇内容介绍了“Git规范操作实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联公司专注于企业全网营销推广、网站重做改版、京山网站定制设计、自适应品牌网站建设、HTML5商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为京山等各大城市提供网站开发制作服务。

规范说明

git commit message即代码提交历史,错误的提交信息会影响代码的可维护性。在多人协作开发场景下因个人风格各有不同,若无统一的规范则很容易导致混乱。目前规范使用较多的是 Angular 团队的规范。

消息提交格式

每个提交消息都包含一个headerbodyfooterheader具备一种特殊的格式,其中包括typescopesubject

(): 

为使在各种git工具中更易于阅读,提交消息的任何一行都不能超过100个字符。

Header

Body

就像在主题(subject)中一样,使用命令式现在时态:“change”而不是“changed”或者“changes”。 body应包括改变的动机,并将其与以前的行为进行比照。

Footer

fix: correct spelling of referrer in headerBREAKING CHANGE: Rather than using misspelled "Referer" as name of header,instead use correct spelling "Referrer". Clients expecting "Referer" will nolonger receive that header  and will presumably not honor the new "Referrer"until updated to support this new name for this header.
Closes #123

或者者关闭多个issue

Closes #123 #456 #789

项目配置

现在比较流行的方案是商定式提交规范(Conventional Commits),它受到了 Angular 提交原则的启发,并在很大程度上以其为依据。笔者尝试查找了基于非node环境相关的Git规范化的辅助工具或者插件,并没有找到很好的处理方案,而我们假如拥有node环境非node项目也可以正常配置执行,只不过在工程中会生成node项目相关的文件,如node_modules文件夹、package.json文件等,因而在项目的版本控制中略微麻烦少量,根据需要定义自己的ingore文件,解决好项目代码和环境代码的问题。

环境和工具

非node项目

定位到workspace目录(即项目根目录)命令行输入npm init,执行后会出现一系列初始化的提醒,可以一直回车至结束。

依赖安装

npm i -D commitizen
npm i -D cz-conventional-changelog
{  "name": "testp",  "version": "1.0.0",  "description": "",  "main": "index.js",  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1",    "commit": "git-cz"  },  "config": {    "commitizen": {      "path": "node_modules/cz-conventional-changelog"    }  },  "author": "",  "license": "ISC",  "devDependencies": {    "commitizen": "^4.2.3",    "cz-conventional-changelog": "^3.3.0"  }}

在项目根目录,命令行执行npm run commit,会出现操作步骤提醒,按前文所诉填写规范化信息。

Git规范操作实例分析操作提醒.png
Git规范操作实例分析操作提醒..png
执行完,sourcetree效果图:
Git规范操作实例分析效果图.png

Commit信息校验和阻拦

尽管我们在项目中配置了commit,但是假如我执行规范操作,不使用npm run commit提交代码,通过命令行或者者Git可视化工具直接commit,那么提交上去的可能是不规范的信息,因而需要对git命令进行阻拦,并对message内容做lint操作。

npm i -D @commitlint/config-conventional @commitlint/cli
{   ...  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1",    "commit": "git-cz",    "commit-lint": "commitlint -e $HUSKY_GIT_PARAMS"  },  "config": {    "commitizen": {      "path": "node_modules/cz-conventional-changelog"    }  },  "commitlint": {    "extends": [      "@commitlint/config-conventional"    ]  },  ...}
  npm install husky --save-dev
npx husky install

git hooks启用后会在项目根目录下生产.husky的文件夹

iGit规范操作实例分析

npx husky add .husky/commit-msg "npm run commit-lint"

执行完成后会生成commit-msg的脚本

Git规范操作实例分析commit-msg-shell.png
此时我们在命令行直接执行git commit -m "test message",会被阻拦提醒提交失败。
Git规范操作实例分析image.png

SourceTree的问题

通过上面配置完成后用SourceTree提交代码会发现运行错误。

Git规范操作实例分析image.png
这是由于SourceTree没有读取到环境变量信息,需要在commit-msg脚本中增加环境变量的配置。
Git规范操作实例分析image.png

#!/bin/sh. "$(dirname "$0")/_/husky.sh"export PATH=/usr/local/bin:$PATHnpm run commit-lint --silent

此刻再运行,已成功阻拦


Git规范操作实例分析

说明

“Git规范操作实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


当前标题:Git规范操作实例分析
标题路径:http://www.bluegullmedia.com/article/isjiji.html

其他资讯

让你的专属顾问为你服务

0.0639s