- git 常用命令
- git Hooks
- 安装husky7 version
- 初始化.husky目录以及pre-commit shell脚本文件 (见图一)
- 若从高版切换为低版本(如7->4)
- 若有eslint需要安装相关库(在.eslintrc 中,extend中添加 “prettier” 解决 eslint 和 prettier 的冲突)
- 需在根目录下创建.prettierrc文件
- 若有需要根目录下.prettierignore来忽略prettier检测
- 1. 使用三方库
- 在.husky目录中新建commit-msg钩子文件并添加以下脚本,在进行commit时候进行检测
- 2. 自定义commit-msg命令检测
- 新增npm scripts
- 在.husky目录中新建commit-msg钩子文件并添加以下脚本,在进行commit时候进行检测
- git添加到暂存区后使用giz cz命令进行填写(注:不支持bash)
git 常用命令
git add . 将所有改动放进暂存区git commit -m "描述" 提交并附带概要信息git pull 从远程仓库拉去代码git push 推送代码到远程仓库(master分支)git log 查看日志git log -p 查看详细历史git log --stat 查看简要统计git status 查看工作区状态git branch 名称 创建分支git checkout 名称 切换分支git checkout -b 名称 创建并切换到新分支git branch -d 名称 删除该分支(不能删除当前所在的分支,不能删除没有合并到master上的分支)git branch -D 名称 删除该分支(可以删除没有合并到master上的分支)git commit --amend 对最新的一条commit进行修正git reset --hard HEAD^ 丢弃最新提交(未提交的内容会被擦掉)git reset --soft HEAD^ 丢弃最新提交(未提交的内容不会被擦掉)git revert HEAD^ 回到某个commitgit rebase 目标基础点 重新设置基础点git merge 名称 将分支合并到head指向的分支git push origin localbranch 将代码推送到远程仓库的指定分支git push -d origin branchName 删除远程分支git stash 暂存代码git stash pop 弹出暂存代码
git Hooks
what is
Git Hooks 就是在Git执行某个操作(如commit、push等)后触发运行的脚本
why use
初始化.husky目录以及pre-commit shell脚本文件 (见图一)
npx husky-init
若从高版切换为低版本(如7->4)
rm -rf .husky && git config —unset core.hooksPath
")")")<a name="ugJ3b"></a># 编码规范及代码提交规范相关<a name="ruS8d"></a>## eslint:- 插件化JavaScript代码检测工具 ,Js编码规范,检测并提示错误或警告信息```bashnpm install eslint --save-dev# 自动生成.eslintrc.js文件npx eslint --init
prettier:
- 代码格式化工具 ,代码风格管理,更好的代码风格效果 ```bash npm install prettier —save-dev —save-exact
若有eslint需要安装相关库(在.eslintrc 中,extend中添加 “prettier” 解决 eslint 和 prettier 的冲突)
npm install eslint-config-prettier eslint-plugin-prettier —save-dev
需在根目录下创建.prettierrc文件
若有需要根目录下.prettierignore来忽略prettier检测
<a name="ubWoN"></a>## lint-staged:- 只检测暂存区的文件,并执行脚本```bashnpm install lint-staged --save-dev
// package.json{"scripts": {"prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",},"lint-staged": {"*.{jsx,less,md,json}": ["prettier --write"],"*.ts?(x)": ["prettier --parser=typescript --write"]}}
commitlint:
npm install —save-dev @commitlint/config-conventional @commitlint/cli
在.husky目录中新建commit-msg钩子文件并添加以下脚本,在进行commit时候进行检测
npx —no-install commitlint —edit $1
2. 自定义commit-msg命令检测
新增npm scripts
“commit-msg”:”node ./scripts/verifyCommit.js”
在.husky目录中新建commit-msg钩子文件并添加以下脚本,在进行commit时候进行检测
npm run commit-msg — $1
<a name="vVTbk"></a>## verifyCommit:- 对commit-msg进行校验(注:chalk版本为: 4.1.1,新版本只支持esModule,而不支持cjs)```bashconst chalk = require("chalk");const msgPath = process.argv.splice(2)[0];const msg = require("fs").readFileSync(msgPath, "utf-8").trim();const commitRE =/^(revert: )?(feat|fix|docs|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release|dep)(\(.+\))?: .{1,50}/;if (!commitRE.test(msg)) {console.error(` ${chalk.bgRed.white(" ERROR ")} ${chalk.red(`invalid commit message format.`)}\n\n` +chalk.red(` Proper commit message format is required for automated changelog generation. Examples:\n\n`) +` ${chalk.green(`type(scope): describe`)}\n\n` +chalk.red(` See .github/commit-convention.md for more details.\n`));process.exit(1);}
commitizen:
- 代码提交内容标准化 ,提示定义输入标准的git commit 内容 ```bash npm install commitizen -g
git添加到暂存区后使用giz cz命令进行填写(注:不支持bash)
git cz ```
