V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
usboy
V2EX  ›  git

为什么我选择使用约定式提交规范: feat, doc, chore, fix

  •  1
     
  •   usboy · 262 天前 · 4358 次点击
    这是一个创建于 262 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用约定式提交规范可以让代码的提交信息更明确,方便团队成员之间的沟通。

    比如:

    • feat 表示添加了新的功能
    • doc 表示更新了文档
    • chore 表示做了一些日常的事务
    • fix 表示解决了某个 bug 。

    我个人认为,使用约定式提交规范可以提高代码的可读性和维护性,你们常用的提交规范有哪些?

    第 1 条附言  ·  262 天前
    分享两个实用的:

    - 各大编辑器插件市场搜索“ai commit 或者 git commit”
    - 开发人员必备的备忘单: [https://cheatsheets.zip/conventional-commits]( https://cheatsheets.zip/conventional-commits)
    第 2 条附言  ·  262 天前

    补充Markdown格式的备忘单链接:https://cheatsheets.zip/conventional-commits

    43 条回复    2024-03-14 08:19:34 +08:00
    Harold2Finch
        1
    Harold2Finch  
       262 天前
    我用 idea 里面的一个插件 Git Commit Template 。除了你列的这几个还有很多别的
    NessajCN
        2
    NessajCN  
       262 天前
    因为用 close/fix/resolve 可以在相关 issue 里直接显示
    rossroma
        3
    rossroma  
       262 天前
    merge:这个不用解释了吧;
    refactor: 代码重构,未改变逻辑,只做代码优化;
    style: 只修改了样式,这个前端会用到;
    fzls
        4
    fzls  
       262 天前   ❤️ 1
    我也喜欢用这个,有时候还附带个括号表明修改范围
    bojackhorseman
        5
    bojackhorseman  
       262 天前
    usboy
        6
    usboy  
    OP
       262 天前
    @NessajCN 也可以通过 Github Actions 生成友好的 Changelog
    usboy
        7
    usboy  
    OP
       262 天前
    @bojackhorseman

    “Code changes that do not impact the functionality (e.g., formatting, white-space, etc)”
    -- 摘自这份约定式提交备忘单: https://cheatsheets.zip/conventional-commits
    rossroma
        8
    rossroma  
       262 天前
    @bojackhorseman 你说的对,代码格式化可以使用 style ,css 的修改一般是有语义的,使用 style 可能不太合适。
    0o0O0o0O0o
        9
    0o0O0o0O0o  
       262 天前 via iPhone
    虽然用,但是不够理解,有时候还是会犹豫到底用哪个 type ,要是有人可以做个类似 https://distrochooser.de/zh-hans 的工具就好了
    wolfie
        10
    wolfie  
       262 天前
    这不是很常见的规范之一吗。
    BeiChuanAlex
        11
    BeiChuanAlex  
       262 天前
    这不是在企业里面必须遵守的规定吗?而且也不止这几个啊。
    wenwei1202k
        12
    wenwei1202k  
       262 天前
    这个不是可以安装下插件,git cz 直接选相关的提交类型就可以了,还会让你写简略和详细说明,是否有 breaking change , 然后配合相关的版本和 change-log 的工具,发布版本时候自动更新 changelog ,这套流程已经算很成熟了
    Martens
        13
    Martens  
       262 天前
    jb 系列的 ide 里有什么推荐的插件吗
    civetcat
        14
    civetcat  
       262 天前
    搜了下 jetbrains 里面好多类似的插件,有哪款比较好用的吗
    alleluya
        15
    alleluya  
       262 天前   ❤️ 1
    @0o0O0o0O0o 前端的话 建议用这个 https://github.com/legend80s/git-commit-msg-linter 省的自己配 husky 了 用的是 ng 的那套约定 我觉得足够一般开发了
    agagega
        16
    agagega  
       262 天前 via iPhone   ❤️ 1
    用 Emoji 好了
    body007
        17
    body007  
       262 天前
    idea 的 Git Commit Message Helper 插件也可以看看。
    otakustay
        18
    otakustay  
       262 天前
    @alleluya 比较流行的是 commitlint 吧,这个才 300 多 star 有点小众了
    ZedRover
        19
    ZedRover  
       262 天前
    npx czg ai 命令行里面可以使用 gpt
    sjhhjx0122
        20
    sjhhjx0122  
       262 天前
    npm 装个全局 git-cz 就能摆脱编辑器,直接命令行写了
    usboy
        21
    usboy  
    OP
       262 天前
    git-cz 和 czg ai​ 可以的
    qinfengge
        22
    qinfengge  
       262 天前
    用的 utools 的插件
    icyalala
        23
    icyalala  
       262 天前
    commit logs 有意义即可
    要说方便沟通我更喜欢这种: https://github.com/ahmadawais/Emoji-Log
    chawuchiren
        24
    chawuchiren  
       262 天前
    有一个小疑问,根据 commit msg 生成 changelog 的话,如果中间提交 要怎么写,比如一个新功能 feat: xxx ,但是我写了 bug ,然后修复,这个时候是 feat: xxx 还是用 fix: xxx?
    Cabana
        25
    Cabana  
       262 天前
    drymonfidelia
        26
    drymonfidelia  
       262 天前
    10 年 一万多个 commits 全是这种
    drymonfidelia
        27
    drymonfidelia  
       262 天前
    @drymonfidelia 公司的主要项目之一,最高的时候月流水一千万
    nqlair
        28
    nqlair  
       262 天前
    zgw0
        29
    zgw0  
       262 天前
    我感觉 chore 的意义很模糊,所有的改动都可以说是 feat 或 fix 什么样的改动算是 chore 呢
    yangzzz
        30
    yangzzz  
       262 天前
    相同的提交规范,只不过我会在后面加点干了些啥活
    alleluya
        31
    alleluya  
       262 天前
    @otakustay 足够用了 而且你看 readme 就是平替 commitlint 的 起码你的工程里不需要 commitlint+husky 只要这一个就够了 对我来说比配置 commitlint 来的简单 install 之后基本就可以用了
    dyc12389
        32
    dyc12389  
       262 天前
    @drymonfidelia #26 这可能才是大多数项目
    palxie
        33
    palxie  
       262 天前
    @zgw0 比如改个版本号. 就可以用 chore 吧
    palxie
        34
    palxie  
       262 天前
    我们的格式是 [jira 号] chore/feature/fix: commit message.
    在 Gitlab 上 jira 号可以配置成 link. 方便到对应的 jira 上.
    usboy
        35
    usboy  
    OP
       262 天前
    @drymonfidelia 逗笑我了
    echo0x000001
        36
    echo0x000001  
       262 天前
    @drymonfidelia 搞复杂了,我就一个字母 ’m‘ ,表示 modify
    via
        37
    via  
       262 天前
    @civetcat 兄弟,这里不是小红书:doge:
    SeaRecluse
        38
    SeaRecluse  
       262 天前
    我们是 A(add)/M(modify)/B(bug)/O(optimization)
    chawuchiren
        39
    chawuchiren  
       262 天前
    @drymonfidelia 现实执行过程中,很常见,就是有些人习惯性的在 commit debug ,所以根本无法描述当前提交的内容,只能 update
    leinad59
        40
    leinad59  
       262 天前
    @rossroma style 指的是代码格式调整这种不影响功能的,而不是页面样式。
    比如前端说,我就改了个样式,那其实是有可能引入 bug 的
    ooops
        41
    ooops  
       262 天前
    @rossroma merge 本来就有足够的信息了,我觉得不用画蛇添足
    yaocy
        42
    yaocy  
       262 天前 via iPhone
    我也很疑惑,有时候写了一些代码,但是又不足以称得上是一个完整的功能,feat 不合适,又不知道该标记什么
    usboy
        43
    usboy  
    OP
       262 天前
    @yaocy 尽量保证每次提交都是单一的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:26 · PVG 08:26 · LAX 16:26 · JFK 19:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.