Git-commit-plugin For Vscode 一款自动生成规范 git 提交信息的插件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Redjue
V2EX    Visual Studio Code

Git-commit-plugin For Vscode 一款自动生成规范 git 提交信息的插件

  •  
  •   Redjue
    RedJue 2020-03-19 21:47:12 +08:00 6547 次点击
    这是一个创建于 2030 天前的主题,其中的信息可能已经有所发展或是发生改变。

    初衷

    在公司由于大家随意提交 git-commit 的信息,导致提交的风格千奇百怪,写的信息不明确,不知道这次提交具体是修复 bug 呢?还是增加新功能,还是单纯改了一些配置文件,亦或是重构了一些不好的代码。只能靠大家自己去猜测,就算是自己提交的信息,也可能因为时间长导致自己也不清楚具体这次提交是为了干啥,只能去提交记录里翻代码,长此以往,不利于产品的迭代,以及对于 bug 的定位。

    为什么写这个插件

    基于这个原因,我们开始寻找比较符合规范的提交格式,Angular 团队的 Angular Team Commit Specification 进入了我们的视野,格式如下:

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

    清晰的信息展现,让我们觉得这个就是我们正在寻找的!为此我们开始搜IDE 有没有对应的插件可以使用,幸运的是后端 Java 团队使用的 IDEA 直接就有现成的插件可以使用,苦逼的我们前端团队都是统一用的 Vscode ,看到了几款插件,但是都不符合我们的要求,为了前端团队不拖后腿,于是乎就想着自己写一款符合要求的插件来供团队使用。

    如何使用

    1. 首先我们需要去 Vscode 插件市场搜索git-commit-plugin 并且进行安装。
    2. 安装完之后可以使用组合键 Command + Shift + P 呼出 指令行,并键入指令 show git commit template 或者点击 git 插件栏上的小图标唤醒插件界面。 open.gif
    3. 根据自己当前提交所要表达的意义,选择对应的 type 类型去编写 commit 信息 edit.gif

    结语

    写插件的时候也踩了不少坑,官网文档为了找个 API 也是看这看那的,不过最终解决了问题也是值得的。如果觉得本项目对你有帮助的,别吝啬你手里的给 本项目 点个 star,您的鼓励就是对作者最大的支持!发现 bug 或者有啥希望改进的点,也欢迎在项目底下提 issue

    第 1 条附言    2020-03-30 22:01:28 +08:00

    2020年3月30日更新

    社区提了很多好的issue,也提了不少 PR ,有修复bug的,也有一些希望加入的功能的,在这次0.0.4版本的更新里都实现和解决了!

    更新内容

    Feat

    • GitCommitPlugin.ShowEmoji: 支持可配置是否需要 Emoji前缀,默认为true
      GitCommitPlugin.ShowEmoji:true 
    • GitCommitPlugin.CustomCommitType: 支持自定义的Commit Type 前缀,默认为null
      GitCommitPlugin.CustomCommitType:[ "customTypeName" ] 
    • GitCommitPlugin.MaxSubjectWords: 支持修改Subject的最大字数,默认为20
      GitCommitPlugin.MaxSubjectWords:20 

    Bug Fix

    28 条回复    2020-03-23 22:22:05 +08:00
    labulaka521
        1
    labulaka521  
       2020-03-19 23:51:13 +08:00 via Android
    learningman
        2
    learningman  
       2020-03-20 00:20:16 +08:00 via Android
    试试能不能迁移到 clion
    yeze322
        3
    yeze322  
       2020-03-20 00:22:18 +08:00
    可以!很好用!
    Redjue
        4
    Redjue  
    OP
       2020-03-20 07:36:03 +08:00   1
    @learningman IDEA 有类似的插件的
    Redjue
        5
    Redjue  
    OP
       2020-03-20 07:37:02 +08:00
    @labulaka521 谢谢
    Redjue
        6
    Redjue  
    OP
       2020-03-20 07:37:40 +08:00
    @yeze322 希望对你有帮助
    vincentxue
        7
    vincentxue  
       2020-03-20 08:12:55 +08:00
    https://github.com/RedJue/git-commit-plugin

    我眼瞎,黑暗模式下找了半天才看到链接文字。直接上链接吧。
    Redjue
        8
    Redjue  
    OP
       2020-03-20 08:18:33 +08:00
    @vincentxue 忘了 V2EX 还支持暗黑模式了,Thanks(ω)
    creanme
        9
    creanme  
       2020-03-20 08:37:23 +08:00
    你 config 文件夹下面的代码都是 2 格缩进,extension.ts 是 4 格缩进
    Redjue
        10
    Redjue  
    OP
       2020-03-20 08:44:10 +08:00
    @creanme 被你发现了
    YoRolling
        11
    YoRolling  
       2020-03-20 12:25:26 +08:00
    花里胡哨的,我们的 commit message 贼多 commit、提交之类的。简直不要太随意
    Redjue
        12
    Redjue  
    OP
       2020-03-20 12:27:10 +08:00
    @YoRolling 主要是个规范约束,当然不同团队有不同的看法,选自己合适的就可以
    hantsy
        13
    hantsy  
       2020-03-20 12:36:00 +08:00
    @YoRolling 有信息就不错,最可怕就是 123 之类的。
    hantsy
        14
    hantsy  
       2020-03-20 12:36:51 +08:00
    这个不知道是 VSCode 的 Git 提交是能不能使用模板?
    YoRolling
        15
    YoRolling  
       2020-03-20 12:37:14 +08:00
    @Redjue 并没有吐槽你的这个 repo 的意思。我自己也有自己的提交格式,从 ng team 的规范里按自己的实际情况做了精简。

    这玩意儿还是得靠人呐,有规范有工具都是其次,最主要还是得执行下去。
    YoRolling
        16
    YoRolling  
       2020-03-20 12:40:26 +08:00
    @hantsy 不,和 123 差不多,因为 commit message 就是 commit 这种毫无意义的信息
    Redjue
        17
    Redjue  
    OP
       2020-03-20 12:56:58 +08:00
    @YoRolling 有工具会有点约束力,不然都随便提交了
    hantsy
        18
    hantsy  
       2020-03-20 12:59:52 +08:00
    国内太难执行,5,6 年前我还在参与一个上海创业项目,想按最简单的 Github Flow 提交代码都做不下去。大家习惯把时间花 SVN 那样天天解决冲突。
    Redjue
        19
    Redjue  
    OP
       2020-03-20 13:07:44 +08:00
    @hantsy 这种只能靠自觉,大部分团队也没办法做到强制,国内大环境就是这样
    hantsy
        20
    hantsy  
       2020-03-20 13:19:55 +08:00
    @Redjue 如果这种基本的规范约束都做不到,堆出来的代码可想而知。
    yeze322
        21
    yeze322  
       2020-03-20 14:05:35 +08:00
    国内企业为人员素质问题绝对推行不下去,爱咋搞咋搞吧,没救的。
    大部分项目确实不需要这种 commit log 级别的约束,很可能自己的模块都没划分清楚,项目没几个月就凉了。
    然而每一个规范的工程团队以及 open source world,都需要对 commit history 有一定的约束。这是对自己负责,也是对后续维护者、阅读者的负责。可惜大多数人还没有无私 /负责到这种程度。
    libery
        22
    libery  
       2020-03-20 14:09:42 +08:00
    直接用 gith hook 做强制检查
    Redjue
        23
    Redjue  
    OP
       2020-03-20 14:12:55 +08:00
    @yeze322 嗯,约束不了别人就约束自己,至少让自己的代码尽量符合规范
    Rwing
        24
    Rwing  
       2020-03-20 14:14:17 +08:00
    szzhiyang
        25
    szzhiyang  
       2020-03-20 14:14:24 +08:00
    @Redjue 建议加上「提交前格式化所有代码」的功能。
    Redjue
        26
    Redjue  
    OP
       2020-03-20 15:47:28 +08:00
    @szzhiyang 代码格式的规范,每个团队都不太一样,还是各自按照 eslint 来配置吧
    cireric
        27
    cireric  
       2020-03-23 20:57:23 +08:00
    @Redjue 阮一峰大神曾经写过一篇 Commit message 的 blog 可以参考一下,他有推荐一个撰写 commit message 工具
    https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html

    当然,自己造最适合的轮子,有 DIY 精神是非常好的事。。
    Redjue
        28
    Redjue  
    OP
       2020-03-23 22:22:05 +08:00
    @cireric 哈哈 谢谢提醒!这个我倒真没想着去找一下阮一峰的 blog,早看到可能对我来说更有帮助,他讲解的很详细,很具有参考价值!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2899 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 13:46 PVG 21:46 LAX 06:46 JFK 09:46
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86