<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【推薦】git commit 規(guī)范和如何在 commit 里使用 emoji

          共 5270字,需瀏覽 11分鐘

           ·

          2021-09-07 09:30

          前言

          大家好,我是桃翁,今天給大家?guī)?lái)的是關(guān)于 git commit 那些事兒,希望大家喜歡。

          對(duì)于規(guī)范 git commit message 我是分成了兩種類型去看待。

          • 對(duì)于通用庫(kù)、開(kāi)源項(xiàng)目這類多人維護(hù),而且極大可能別人會(huì)來(lái)看這份代碼的,一定要規(guī)范,特別是對(duì)于開(kāi)源項(xiàng)目,往往會(huì)要列 Change Log,規(guī)范好 commit 節(jié)省自己整理 log 的時(shí)間,也方便了用戶。

          • 對(duì)于業(yè)務(wù)代碼,特別是那種一個(gè)人維護(hù)的,其實(shí)不搞問(wèn)題也不大,因?yàn)闃O小可能會(huì)有人來(lái)看你的 commit message。但是我依然還是建議規(guī)范一下,不然一旦后面想去看就會(huì)花費(fèi)很多的力氣,畢竟規(guī)范一下也不麻煩。

          通過(guò)本篇文章你講了解到三部分內(nèi)容:

          1. 了解 git commit 規(guī)范
          2. 學(xué)到用工具 Commitizen 來(lái)規(guī)范 commit
          3. 學(xué)到如何在 commit message 里加上好看的 emoji

          規(guī)范

          現(xiàn)在主流的 commit message 規(guī)范就是 Angular 團(tuán)隊(duì)所用的準(zhǔn)則[1],繼而衍生了 Conventional Commits specification[2]. 很多工具也是基于此規(guī)范。

          每次提交,Commit message 都包括三個(gè)部分:header,body 和 footer,其中 header 有一個(gè)特殊的格式,包括了 type、scope、subject。

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

          其中 header 是必選的,但是 header 里的 scope 是可選的,另外提交的 message 長(zhǎng)度不要超過(guò) 100 個(gè)字符,太長(zhǎng)了不易閱讀。

          對(duì)于我個(gè)人來(lái)說(shuō),我覺(jué)得只要把 header 部分規(guī)范其實(shí)基本能滿足絕大部分需要了,強(qiáng)制去規(guī)范 body 和 footer 對(duì)于團(tuán)隊(duì)的同學(xué)來(lái)說(shuō)簡(jiǎn)直是折磨,所以我這里僅介紹 header 的幾部分

          type

          type 指明 git commit 的類別,應(yīng)該使用以下類型

          • 『feat』: 新增功能
          • 『fix』: 修復(fù) bug
          • 『docs』: 僅僅修改了文檔,比如 README, CHANGELOG 等等
          • 『test』: 增加/修改測(cè)試用例,包括單元測(cè)試、集成測(cè)試等
          • 『style』: 修改了空行、縮進(jìn)格式、引用包排序等等(不改變代碼邏輯)
          • 『perf』: 優(yōu)化相關(guān)內(nèi)容,比如提升性能、體驗(yàn)、算法等
          • 『refactor』: 代碼重構(gòu),「沒(méi)有新功能或者 bug 修復(fù)」
          • 『chore』: 改變構(gòu)建流程、或者增加依賴庫(kù)、工具等
          • 『revert』: 回滾到上一個(gè)版本
          • 『merge』: 代碼合并

          這里面有些 angular 團(tuán)隊(duì)沒(méi)有,自己可以自行增減

          scope(可選)

          scope 用于說(shuō)明 commit 影響的范圍,根據(jù)不同項(xiàng)目有不同層次描述。若沒(méi)有特殊規(guī)定,也可以描述影響的哪些功能等。

          subject

          subject 是 commit 目的的簡(jiǎn)短描述,不超過(guò) 50/80 個(gè)字符,一般 git 提交的時(shí)候會(huì)有顏色提示。

          • 若英文用不慣,那么推薦使用中文
          • 若是開(kāi)源代碼,一律推薦統(tǒng)一英文,英文不行可以翻譯軟件用起來(lái)
          • 若是開(kāi)源代碼,可以再附加對(duì)應(yīng)的 issue 地址
          • 結(jié)尾不加標(biāo)點(diǎn)符號(hào)

          工具:Commitizen

          Commitizen 是一個(gè)撰寫(xiě)合格 Commit message 的工具,(詳細(xì)說(shuō)明見(jiàn) github 地址[3]),用于代替 git commit 指令,而 cz-conventional-changelog 適配器提供 conventional-changelog 標(biāo)準(zhǔn)(約定式提交標(biāo)準(zhǔn))?;诓煌枨?,也可以使用不同適配器。

          1. 全局安裝 commitizen cz-conventional-changelog

          npm install -g commitizen cz-conventional-changelog

          2. git cz 取代 git commit

          安裝完畢后,可直接使用 git cz 來(lái)取代 git commit。

          可以看到當(dāng)你 cz 之后,下面有很多的 type 讓你選擇,這就省掉了每次你去想應(yīng)該用哪種 type,非常方便。

          全局模式下,需要 ~/.czrc 配置文件, 為 commitizen 指定 Adapter, 如果你不需要生成 Change Log 可以不用去處理。

          只要用了 Commitizen ,就很方便的就規(guī)范的大家的 message 。

          在 commit message 里用 emoji

          在 git commit 上使用 emoji 提供了一種簡(jiǎn)單的方法,僅通過(guò)查看所使用的表情符號(hào)來(lái)確定提交的目的或意圖, 得提交記錄非常好理解,閱讀體驗(yàn)非常棒。

          使用方法

          git commit 時(shí)直接在注釋中寫(xiě)入表情符號(hào)的代碼部分即可完成表情 emoji 的提交。

          舉個(gè)栗子:

          $ git commit -m ':tada: init commit'
          $ git commit -m 'added image to repo :art:'

          如果你用 Commitizen,可能不太好把 emoji 放在最前面,因?yàn)樵蹅儾僮鞯目臻g,就在 git cz 后第三次交互提示,也就是在輸入 header 的 subject 的時(shí)候填入,如果是這樣,可以選擇把表情放到最后。

          效果展示:

          如果你們團(tuán)隊(duì)是一個(gè)喜歡用 emoji 的團(tuán)隊(duì),其實(shí)可以不用遵循上面的一節(jié)的規(guī)范,因?yàn)?emoji 已經(jīng)可以表達(dá)出 header 的 type 的作用了,直接在 emoji 后面加描述即可。

          emoji 表情庫(kù)

          emojiemoji 代碼commit 說(shuō)明
          :tada: (慶祝):tada:初次提交
          :new: (全新):new:引入新功能
          :bookmark: (書(shū)簽):bookmark:發(fā)行/版本標(biāo)簽
          :bug: (bug):bug:修復(fù) bug
          :ambulance: (急救車):ambulance:重要補(bǔ)丁
          :globe_with_meridians: (地球):globe_with_meridians:國(guó)際化與本地化
          :lipstick: (口紅):lipstick:更新 UI 和樣式文件
          :clapper: (場(chǎng)記板):clapper:更新演示/示例
          :rotating_light: (警車燈):rotating_light:移除 linter 警告
          :wrench: (扳手):wrench:修改配置文件
          :heavy_plus_sign: (加號(hào)):heavy_plus_sign:增加一個(gè)依賴
          :heavy_minus_sign: (減號(hào)):heavy_minus_sign:減少一個(gè)依賴
          :arrow_up: (上升箭頭):arrow_up:升級(jí)依賴
          :arrow_down: (下降箭頭):arrow_down:降級(jí)依賴
          :zap: (閃電)
          :racehorse: (賽馬)
          :zap:
          :racehorse:
          提升性能
          :chart_with_upwards_trend: (上升趨勢(shì)圖):chart_with_upwards_trend:添加分析或跟蹤代碼
          :rocket: (火箭):rocket:部署功能
          :white_check_mark: (白色復(fù)選框):white_check_mark:增加測(cè)試
          :memo: (備忘錄)
          :book: (書(shū))
          :memo:
          :book:
          撰寫(xiě)文檔
          :hammer: (錘子):hammer:重大重構(gòu)
          :art: (調(diào)色板):art:改進(jìn)代碼結(jié)構(gòu)/代碼格式
          :fire: (火焰):fire:移除代碼或文件
          :pencil2: (鉛筆):pencil2:修復(fù) typo
          :construction: (施工):construction:工作進(jìn)行中
          :wastebasket: (垃圾桶):wastebasket:廢棄或刪除
          :wheelchair: (輪椅):wheelchair:可訪問(wèn)性
          :construction_worker: (工人):construction_worker:添加 CI 構(gòu)建系統(tǒng)
          :green_heart: (綠心):green_heart:修復(fù) CI 構(gòu)建問(wèn)題
          :lock: (鎖):lock:修復(fù)安全問(wèn)題
          :whale: (鯨魚(yú)):whale:Docker 相關(guān)工作
          :apple: (蘋(píng)果):apple:修復(fù) macOS 下的問(wèn)題
          :penguin: (企鵝):penguin:修復(fù) Linux 下的問(wèn)題
          :checkered_flag: (旗幟):checkered_flag:修復(fù) Windows 下的問(wèn)題
          :twisted_rightwards_arrows: (交叉箭頭):twisted_rightwards_arrows:分支合并

          如何在命令行中顯示 emoji

          默認(rèn)情況下,在命令行中并不會(huì)顯示出 emoji, 僅顯示 emoji 代碼。不過(guò)可以使用 emojify 使得在命令行也可顯示 emoji, 它是一個(gè) shell 腳本,安裝與使用都很簡(jiǎn)單,在這里[4] 查看更詳細(xì)的如何安裝與使用。

          安裝 emojify

          $ sudo sh -c "curl https://raw.githubusercontent.com/mrowa44/emojify/master/emojify -o /usr/local/bin/emojify && chmod +x /usr/local/bin/emojify"

          使用 emojify

          $ emojify "Hey, I just :raising_hand: you, and this is :scream: , but here's my :calling: , so :telephone_receiver: me, maybe?"

          顯示效果:

          在使用 git bash 的時(shí)候,設(shè)置替換日志中的表情符號(hào)代碼

          $ git log --oneline --color | emojify | less -r

          或者設(shè)置 git log 命令別名

          alias gitlog='git log --oneline --color | emojify | less -r'

          $ gitlog

          效果如下:

          是不是很好玩,快去試試吧!

          參考資料

          • git-emoji-guide[5]
          • git commit 時(shí)使用 Emoji ?[6]

          參考資料

          [1]

          Angular 團(tuán)隊(duì)所用的準(zhǔn)則: https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines

          [2]

          Conventional Commits specification: https://link.zhihu.com/?target=https%3A//conventionalcommits.org/

          [3]

          見(jiàn) github 地址: https://github.com/commitizen/cz-cli

          [4]

          這里: https://github.com/mrowa44/emojify

          [5]

          git-emoji-guide: https://hooj0.github.io/git-emoji-guide/

          [6]

          git commit 時(shí)使用 Emoji ?: https://zhuanlan.zhihu.com/p/29764863




          推薦閱讀




          我的公眾號(hào)能帶來(lái)什么價(jià)值?(文末有送書(shū)規(guī)則,一定要看)

          每個(gè)前端工程師都應(yīng)該了解的圖片知識(shí)(長(zhǎng)文建議收藏)

          為什么現(xiàn)在面試總是面試造火箭?

          瀏覽 38
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  性感美女操逼视频 | 青青草手机在线 | 俺来也,俺去也 | 欧洲精品无码一区二区在线 | 黄色视频直接看 |