• 天天提交代码,git commit 提交时能规范一下吗?


    1、前言

    写好git commit提交有什么好处呢?

    • 查看提交的log也非常的优雅,这个就不多提了
    • 方便查找日志记录,通过简单的过滤便能定位到具体想要查找的log
    • 方便问题回溯,通过git log就能查找到当时提交的代码文件,以及修改的代码
    • 其实如果使用过github的release, 可以直接根据feat和fix来过滤提取日志发布版本

    接下来我就来实践一下,首先我这里使用的是pnpm安装依赖的。今天主要是在提交代码时稍微自动化一点,并且让提交规范统一一些。

    具体操作的源码项目 github.com/aehyok/taro

    2、commitizen插件

    pnpm i commitizen -D 

    此时我们先 git add .,然后就可以使用一下 git cz,所以现在可以直接在package.json中添加一个scripts

    1. // && 代表`git add .和 `git cz` 两个指令串行执行,
    2. // 先执行前一个,执行完后再执行后一个
    3. "git": "git add . && git cz"

    那么接下来直接执行 pnpm git

    输入commit的提交信息,保存,关闭小窗,因为我这里用的是gitExtensions图形操作程序,随后git push提交即可,但是这样其实只是换了一个命令而已,并没有什么实质性的改变。那接下来就让它改变一下吧

    3、cz-customizable设置提交模板

    pnpm i cz-customizable -D

    安装完之后在package.json中添加如下节点

    1. "config": {
    2. "commitizen": {
    3. "path": "node_modules/cz-customizable"
    4. }
    5. },

    同时可以再根目录创建.cz-config.js,这里有一份官网提供的模板 github.com/leoforfree/…

    下面这个是我自己修改后的提交模板

    1. module.exports = {
    2. // type 类型(定义之后,可通过上下键选择)
    3. types: [
    4. { value: 'feat', name: 'feat: 新增功能' },
    5. { value: 'fix', name: 'fix: 修复 bug' },
    6. { value: 'docs', name: 'docs: 文档变更' },
    7. {
    8. value: 'style',
    9. name: 'style: 代码格式(不影响功能,例如空格、分号等格式修正)'
    10. },
    11. {
    12. value: 'refactor',
    13. name: 'refactor: 代码重构(不包括 bug 修复、功能新增)'
    14. },
    15. { value: 'perf', name: 'perf: 性能优化' },
    16. { value: 'chore', name: 'chore: 其他修改, 比如构建流程, 依赖管理、版本好修正.' }
    17. ],
    18. // scope 类型(定义之后,可通过上下键选择)
    19. scopes: [
    20. ['components', '组件相关'],
    21. ['hooks', 'hook 相关'],
    22. ['utils', 'utils 相关'],
    23. ['element-ui', '对 element-ui 的调整'],
    24. ['styles', '样式相关'],
    25. ['deps', '项目依赖'],
    26. ['auth', '对 auth 修改'],
    27. ['other', '其他修改'],
    28. // 如果选择 custom,后面会让你再输入一个自定义的 scope。也可以不设置此项,把后面的 allowCustomScopes 设置为 true
    29. ['custom', '以上都不是?我要自定义']
    30. ].map(([value, description]) => {
    31. return {
    32. value,
    33. name: `${value.padEnd(30)} (${description})`
    34. }
    35. }),
    36. // 是否允许自定义填写 scope,在 scope 选择的时候,会有 empty 和 custom 可以选择。
    37. // allowCustomScopes: true,
    38. // allowTicketNumber: false,
    39. // isTicketNumberRequired: false,
    40. // ticketNumberPrefix: 'TICKET-',
    41. // ticketNumberRegExp: '\\d{1,5}',
    42. // 针对每一个 type 去定义对应的 scopes,例如 fix
    43. /*
    44. scopeOverrides: {
    45. fix: [
    46. { name: 'merge' },
    47. { name: 'style' },
    48. { name: 'e2eTest' },
    49. { name: 'unitTest' }
    50. ]
    51. },
    52. */
    53. // 交互提示信息
    54. messages: {
    55. type: '确保本次提交遵循:前端代码规范!\n选择你要提交的类型:',
    56. scope: '\n选择一个 scope(可选):',
    57. // 选择 scope: custom 时会出下面的提示
    58. customScope: '请输入自定义的 scope:',
    59. subject: '填写简短精炼的变更描述:\n',
    60. body: '填写更加详细的变更描述(可选)。使用 "|" 换行:\n',
    61. breaking: '列举非兼容性重大的变更(可选):\n',
    62. footer: '列举出所有变更的 ISSUES CLOSED(可选)。 例如: #31, #34:\n',
    63. confirmCommit: '确认提交?'
    64. },
    65. // 设置只有 type 选择了 feat 或 fix,才询问 breaking message
    66. allowBreakingChanges: ['feat', 'fix'],
    67. // 跳过要询问的步骤
    68. skipQuestions: ['scope', 'body', 'breaking', 'footer'],
    69. subjectLimit: 100, // subject 限制长度
    70. breaklineChar: '|' // 换行符,支持 body 和 footer
    71. // footerPrefix : 'ISSUES CLOSED:'
    72. // askForBreakingChangeFirst : true,
    73. }

    运行 pnpm git

    根据指引提示,然后输入提交信息,推送到服务器就完成了,查看git log可以发现

    4、总结

    其实还可以将脚本修改一下

    "git": "git add . && git cz && git push"

    这样三个指令会串行执行,一个接着一个执行,如果提交没什么问题的话,很自然就推送到远端了。

  • 相关阅读:
    NVMe SSD 学习总结 03: 浅析SSD技术基础NAND-Flash原理(NANA结构、工作原理、写放大)
    java Map集合获取方法
    关于倾斜摄影测量技术,你了解多少?
    解决gpt无法发送对话的问题
    Python编程挑战赛
    百多安医疗冲刺科创板:半年营收1亿 为张海军与郭海宏夫妻店
    c# Unity 获取时间戳
    第10章Swagger自定义实现index.html页
    【opencv】教程代码 —video(1) 对象追踪
    如何快速绘制任意角度的扇形?
  • 原文地址:https://blog.csdn.net/lt_xiaodou/article/details/126483544