Git规范操作实例分析

发布时间:2022-04-21 10:54:26 作者:iii
来源:亿速云 阅读:219

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

规范说明

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

消息提交格式

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

<type>(<scope>): <subject><BLANK LINE><body><BLANK LINE><footer>

为使在各种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规范操作实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. git提交规范
  2. git 基本操作

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

git

上一篇:git push到远程服务器出现RPC failed问题怎么解决

下一篇:Github访问速度慢及图片加载慢问题怎么处理

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》